2015-05-04 45 views
2

我期待在提交时验证日期。如果输入元素的值为空或格式错误,则会显示错误消息。jQuery表单验证的空白字段或格式不正确的字段

这里是我的HTML:

<form method="get" action="date-picker.html" id="frmdate" onsubmit="return validate()"> 
    <p>Start Date: <input type="text" name="txtdate" id="startdate"></p><span id="warning_startdate"></span> 
    <p>End Date: <input type="text" name="txtdate" id="enddate"></p><span id="warning_enddate"></span> 
    <input type="submit" value="send"> 
</form> 

这里是我的jQuery:

$(function() { 
    $("#startdate, #enddate").datepicker({ dateFormat: 'yy-mm-dd' }); 
}); 

$('form').on('submit',function(e){ 
    if(! (/\d{2}-\d{2}-\d{2}/.test($('#startdate').val()) && /\d{2}-\d{2}-\d{2}/.test($('#enddate').val()))) { 
    e.preventDefault(); 
    document.getElementById("warning_startdate").innerHTML = ('please insert valid date & format'); 
    } 
}); 

我需要使用的插件吗?有没有什么办法可以在没有插件的情况下做到这一点?

任何帮助,将不胜感激。

+0

HTML没有加载,它是在这里 <形式方法= “获取” 行动=“日期picker.html “> 开始日期 结束日期 <输入类型=“submit”value =“send”> –

回答

2

您可以通过使用jQuery的正则表达式achive它无需插件,并在形式上检查有效日期提交事件如下

$(文件)。就绪(函数(){

$(function() { 
    $("#startdate, #enddate").datepicker({ dateFormat: 'yy-mm-dd' }); 
    });  //code indentation 
$('form').on('submit',function(e){ 
    if(! (/\d{2}-\d{2}-\d{2}/.test($('#startdate').val()) && /\d{2}-\d{2}-\d{2}/.test($('#enddate').val()))) 
    { 
    e.preventDefault(); //stop form being submitted! 
    alert('please insert valid date'); 
    } 
}); 

} );

+0

谢谢,这个作品。我现在将一个span添加到我的HTML中,以在innerhtml中显示warning msg而不是alert。如果我要在一个字段中输入正确的日期并在第二个字段中输入错误的日期,这会起作用吗? –

+0

你欢迎.. :),并警告你甚至可以使用alertify.js或一些插件,这是很好的提醒用户或正如你说的跨度也可以工作。 :) –

+0

我已经使用你的代码,看看会发生什么变化,并已更新我的问题。任何承担这一点?我会使用if/else语句 –

2

HTML:

<form action="" method="post" name="form" id="form"> 
    <p>Start Date <input type="text" id="startdate"></p> 
    <p>End Date <input type="text" id="enddate"></p> 
    <input type="submit" id="signup" value="Send">    
</form> 

的Javascript:

$('#form').submit(function(event) { 
    if (($("#startdate").val()) === "" || ($("#enddate").val()) === "") { 
    alert('The fields start date and end date cannot be empty. Please enter value.'); 
    return false; 
    } else if(! (/\d{2}-\d{2}-\d{2}/.test($('#startdate').val()) && /\d{2}-\d{2}-\d{2}/.test($('#enddate').val()))) { 
    alert('Please insert date in valid format.'); 
    return false; 
    } else { 
    $("#form").attr("action", "date-picker.html"); 
    $("#form").submit(); 
    } 
}); 

JSFiddle

+0

我已经更新了问题,现在有两个单独的错误消息显示,有帮助吗? –

+0

使一个通用跨度显示消息,否则您将不得不分别对每个元素进行验证,以将innerHTML添加到特定跨度,这将包含更多的if-else和增加的代码圈复杂度。 –

+0

一个通用的听起来是一个好主意。出于兴趣的缘故,如果其他语句以其他方式使用,我会用吗? –