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()

它返回真或假!

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 回答