提交时的JavaScript日期验证

时间:2017-03-14 09:07:52

标签: javascript regex validation date

我在这里模拟了我的实际代码。

我需要做的是,如果日期格式无效,则应返回false并且不会提交。

function validateDate(DateField) {
	    var regDate = /^([0-9]{2})\.([0-9]{2})\.([0-9]{4})$/;

	    if(DateField.value.length > 0) {
	        if(regDate.test(DateField.value) == false) {
	            alert('Date Format should be dd.mm.yyyy!');
	            document.getElementById("lblTest").style.color = "red";
	            return false;
	        } else {
	            document.getElementById("lblTest").style.color = "black"
	            return true;
	        }
	    } else {
	        document.getElementById("lblTest").style.color = "black";
	        return true;
	    }
	}
  
  $("#submit").click(function(){
    //condition should be here but right now I dont know what this should be
  });
<form method="post">
    <label id="lblTest">Date</label>
    <input type="test" placeholder="dd.mm.yyyy" id="txtDate" onblur="validateDate(this);">
    <input type="button" id="submit" formaction="www.google.com" value="Submit">
</form>

5 个答案:

答案 0 :(得分:1)

您可以处理提交事件。如果验证没有通过返回false:

$('form').submit(function(){
    //validate here
})

答案 1 :(得分:0)

最好使用HTML5日期类型输入并以您想要的格式解析日期。 这样做会很方便。

更新

这是输入框:

<input type="date" onBlur="fngetDate(this.value)"> 

以下是Code To Parse It:

    function fngetDate(val){ 
var dateEntered = new Date(val); var myFormat = dateEntered.getDate() + '.'+dateEntered.getMonth()+'.'+dateEntered.getFullYear(); alert(myFormat); }

答案 2 :(得分:0)

如果chrome是唯一的目标浏览器:

使用date type input <input type="date">

其他使用模式<input type="text" pattern="yourRegEx" required>

<form method="post">
    <label id="lblTest">Date</label>
    <input type="date" required>
    <br>
    <label>another Date</label>
    <input type="text" required pattern="(0[1-9]|1[0-9]|2[0-9]|3[01]).(0[1-9]|1[012]).[0-9]{4}" value="" id="dates_pattern0" placeholder="dd.MM.YYYY">
    <input type="text" formaction="www.google.com" value="Submit">
</form>

在这里工作JSFiddle:https://jsfiddle.net/0ay8jkx4/2/

答案 3 :(得分:0)

试试此代码

function validateDate(DateField) {
    var regDate = /^([0-9]{2})\.([0-9]{2})\.([0-9]{4})$/;

    if(DateField.value.length > 0) {
        if(regDate.test(DateField.value) == false) {
            alert('Date Format should be dd.mm.yyyy!');
            document.getElementById("lblTest").style.color = "red";
        $('#submit').attr('disabled', 'disabled');

            return false;
        } else {
            document.getElementById("lblTest").style.color = "black"
        $('#submit').attr('disabled', false);
            return true;
        }
    } else {
        document.getElementById("lblTest").style.color = "black";
    $('#submit').attr('disabled', false);
        return true;
    }
}

此处,根据日期验证启用或禁用提交按钮

答案 4 :(得分:-1)

就这样做

$("form").submit(function(){
    return validateDate(document.getElementById("txtDate"));
});

当然你应该将你的正则表达式修改为:

^(([0-2]{0,1}[1-9]{1})|(3{0,1}[0-1]{0,1}))\.((0[1-9])|(1[0-2]))\.((19[0-9][0-9])|(20((0[0-9])|(1[0-7]))))$