Jquery,在表单提交之前验证输入

时间:2016-11-16 11:44:29

标签: jquery

我正在编写一个小的jquery函数,它应该检查四个项目的选定输入。选择的主题是"时间"以小时和分钟显示为下拉列表。

我有"来自"小时和"来自"分钟," To"小时和" To"分钟。

我想确保" From"小时和分钟少于" To"小时和小步,直到这是正确的隐藏表单提交按钮。

这就是我所拥有的:

function getvalHT(sel) {
var selectedFromHours   = $('#RoomFromTimeH').val();
selectedFromHours       = selectedFromHours.replace(/\b0+/g, '');
var selectedToHours     = $('#RoomToTimeH').val();
selectedToHours         = selectedToHours.replace(/\b0+/g, '');

var selectedFromMin     = $('#RoomFromTimeM').val();
selectedFromMin         = selectedFromMin.replace(/\b0+/g, '');
var selectedToMin       = $('#RoomToTimeM').val();
selectedToMin           = selectedToMin.replace(/\b0+/g, '');

if(selectedFromHours < selectedToHours) {
    alert ('The "To" hours must be greater than the "From" hours');
    $("#savebutton").hide();
} else if(selectedFromMin > selectedToMin) {
    alert ('The "To" minutes must be greater than the "From" minutes');
    $("#savebutton").hide();
} else {
    $("#savebutton").show();    
}

}

<select name="RoomToTimeH" id="RoomToTimeH" class="imaindateselTime" onchange="getvalHT(this);">

<select name="RoomToTimeM" id="RoomToTimeM" class="imaindateselTime" onchange="getvalHT(this);">

我有这部分工作,但如果用户选择了正确的时间,则不会出现提交按钮。

我是正确地这样做还是我离开了。

非常感谢你的时间。

1 个答案:

答案 0 :(得分:2)

问题: if(selectedFromHours < selectedToHours) { From小时小于To小时因此有效但您认为它无效。除非小时数相等,否则你不应该检查会议纪要。

<强>解决方案:

if逻辑必须改变一点。

if(selectedFromHours < selectedToHours) {       
    $("#savebutton").show(); // since From hour is smaller don't care about minutes
} else if(selectedFromHours == selectedToHours && selectedFromMin < selectedToMin){
  $("#savebutton").show(); //Hours are same but from minute is smaller - VALID
}else {
  $("#savebutton").hide();  // any other condition hide the button
}

解释逻辑

  • if(selectedFromHours < selectedToHours) {:如果From小时小于To,则无需检查分钟数。这是有效的
  • else if(selectedFromHours == selectedToHours && selectedFromMin < selectedToMin){:如果From和To Hour相等,那么我们需要检查Minutes,From minutes必须小于To minutes。这是有效的
  • 任何其他条件无效