0

jquery カレンダーの日付ピッカーを使用して入力テキスト ボックスを検証しようとしています。日付ピッカー自体はうまく機能しますが、入力が mm/dd/yyyy 形式であることを検証する方法がわかりません。コンテンツが別の jsp からロードされているため、これはこのようにセットアップされます。

ここに入力があります。

<table class="style2" width="100%">
    <tr>
        <td width="291" valign="middle">
            <p>Date: <input type="text" class="followup_three_02" id="followup_three_02" maxlength="10" size="10" value="<%=session.getAttribute("followup_three_02")==null?"":session.getAttribute("followup_three_02")%>" />
        </td>
        <td width="246">            
        </td>
    </tr>
</table>  

そして日付ピッカー

function showContent(pos,direction){
    $("#area").hide("slide", { direction: direction=="left"?"right":"left"}, 500,      
        function(){
            $("#area").load("3month_forms.jsp #area" + pos, function(){
                $("#area").show("slide", { direction: direction }, 500);
                if(pos==2){
                    $(function(){
                    var pickerOpts = {
                        showOn: "button",
                        buttonImage: "/images/calendar.png",
                        buttonImageOnly: true,
                        changeMonth: true,
                        changeYear: true,
                        yearRange: "-60:+0"
                    }; 
        $("#followup_three_02").datepicker(pickerOpts);
});

                }
            }); 
        }             
    );
}

私のバリデーターは正しくありません。

}else if(question_pos==2){
        if($('#followup_three_02').val() == ( Date.parse("4/8/2013") > Date.now())){
            alert("What is your baby's birthdate? ");
        return false;
4

2 に答える 2

1

これは条件です:

Date.parse("4/8/2013") > Date.now()

true または false を返します。

val()は常に文字列を返します。この場合、おそらく のような文字列としての日付で5/5/2013あり、それを true または false と比較すると、常に false になります。

if($('#followup_three_02').val() == ( Date.parse("4/8/2013") > Date.now())){
// if  string ^^^^^^^^^         equals       true or false ^^^^^^ == always false

代わりに試してください:

var given_date   = Date.parse( $('#followup_three_02').val() ),
    compare_date = Date.parse("4/8/2013");

if ( given_date.getTime() > compare_date.getTime() ) { ... }

jQuery datepicker を使用しているため:

var given_date   = $("#followup_three_02").datepicker('getDate'),
    compare_date = $.datepicker.parseDate('m/d/yy', '04/08/2013', {});

if ( given_date > compare_date ) { ... }

フィドル

于 2013-04-12T19:07:42.373 に答える
0

この関数を呼び出します。日付が mm/dd/yyyy 形式でない場合、false が返されます。

function isDate(txtDate) {
        var currVal = txtDate;
        if (currVal === '') {
            return false;
        }

        //Declare Regex
        var rxDatePattern = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
        var dtArray = currVal.match(rxDatePattern); // is format OK?
        if (dtArray === null) {
            return false;
        }

        //Checks for mm/dd/yyyy format.
        dtMonth = dtArray[3];
        dtDay = dtArray[1];
        dtYear = dtArray[5];

        if (dtMonth < 1 || dtMonth > 12) {
            return false;
        }
        else if (dtDay < 1 || dtDay > 31) {
            return false;
        }
        else if ((dtMonth == 4 || dtMonth == 6 || dtMonth == 9 || dtMonth == 11) && dtDay == 31) {
            return false;
        }
        else if (dtMonth == 2) {
            var isleap = (dtYear % 4 === 0 && (dtYear % 100 !== 0 || dtYear % 400 === 0));
            if (dtDay > 29 || (dtDay == 29 && !isleap)) {
                return false;
            }
        }
        else {
            return true;
        }
    }
于 2013-04-12T19:06:50.953 に答える