有没有办法简化功能并一次检查所有输入框而不是一个一个检查
Is there a way to simplify the functions and check all the input box at once and not one by one
我有一个 javascript 函数来验证日期的输入。输入的日期必须是 DD/MM/YYYY。我试图阻止用户输入 DD/MM/YY。
当我在 post-back 期间单击表单的提交按钮时,我正在调用该函数。我在表单标签中放置了带有 return 的 onsubmit 函数。我对每个日期输入框都一一检查,如果有错误,我会return false。这只会一一检查每个框。
但是,我希望一次检查所有日期输入框,并列出所有错误的而不是一个一个地列出,我也希望在发现错误时停止post返回,我该如何做到这一点?请帮忙。
我把函数放在 onsubmit 和 form 标签中。
<form class="form-horizontal" action="tmemply_det.asp" method="post" onsubmit="return validatedt();">
我输入了 5 个日期,这是其中之一
<div class="form-group">
<label class="col-sm-3 control-label">Date Join : </label>
<div id="div_dt_join" class="col-sm-5 col-lg-3">
<div class="input-group">
<input id="dt_join" name="dt_join" value="<%=dt_join%>" type="text" class="form-control" date-picker>
<div class="input-group-addon">
<i class="fa fa-calendar"></i>
</div>
</div>
<span id="errdt_join" class="help-block"></span>
</div>
</div>
javascript函数
function validatedt(){
var input = document.getElementById("dt_join").value;
var pattern =/^([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})$/;
if (pattern.test(input)==false){
alert("Date Join format is incorrect, please key in DD/MM/YYYY");
document.getElementById('div_dt_join').className += ' has-error'
document.getElementById("errdt_join").innerHTML = "Please key in DD/MM/YYYY"
return false;
}
var input = document.getElementById("dt_confirm").value;
var pattern =/^([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})$/;
if (input.length!=0 && pattern.test(input)==false){
alert("Date Confirm format is incorrect, please key in DD/MM/YYYY");
document.getElementById('div_dt_confirm').className += ' has-error'
document.getElementById("errdt_confirm").innerHTML = "Please key in DD/MM/YYYY"
return false;
}
var input = document.getElementById("dt_resign").value;
var pattern =/^([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})$/;
if (input.length!=0 && pattern.test(input)==false){
alert("Date Resign format is incorrect, please key in DD/MM/YYYY");
document.getElementById('div_dt_resign').className += ' has-error'
document.getElementById("errdt_resign").innerHTML = "Please key in DD/MM/YYYY"
return false;
}
var input = document.getElementById("dt_DOB").value;
var pattern =/^([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})$/;
if (pattern.test(input)==false){
alert("Date of Birth format is incorrect, please key in DD/MM/YYYY");
document.getElementById('div_dt_DOB').className += ' has-error'
document.getElementById("errdt_DOB").innerHTML = "Please key in DD/MM/YYYY"
return false;
}
var input = document.getElementById("dt_WorkPEx").value;
var pattern =/^([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})$/;
if (input.length!=0 && pattern.test(input)==false){
alert("Work Permit Expiry Date format is incorrect, please key in DD/MM/YYYY");
document.getElementById('div_dt_WorkPEx').className += ' has-error'
document.getElementById("errdt_WorkPEx").innerHTML = "Please key in DD/MM/YYYY"
return false;
}
}
循环是你的朋友。
function validatedt(){
var success = true;
var inputData = ['Join', 'Confirm', 'Resign', 'of Birth', 'Work Permit Expiry'];
for (var i = 0; i < inputData.length; i++) {
var key = inputData[i].toLowerCase();
var msg = "Date " + inputData[i];
//Deal with edge cases where naming doesn't follow convention
if (inputData[i] === 'of Birth') {
key = 'DOB';
}
else if (inputData[i] === 'Work Permit Expiry') {
key = 'WorkPEx';
msg = inputData[i];
}
var input = document.getElementById("dt_" + key).value;
var pattern =/^([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})$/;
if (pattern.test(input)==false){
alert(msg + " format is incorrect, please key in DD/MM/YYYY");
document.getElementById('div_dt_' + key).className += ' has-error'
document.getElementById("errdt_" + key).innerHTML = "Please key in DD/MM/YYYY"
success = false;
}
}
return success;
}
为了更新多个错误,我们不直接return假。相反,我们存储一个值为 true 的变量 "success",因此如果一切正常,它将 return 为真。如果有任何错误,它将 return false,因为我们在检测到错误时更改变量。一旦我们检查完所有内容,我们只会 return。
我有一个 javascript 函数来验证日期的输入。输入的日期必须是 DD/MM/YYYY。我试图阻止用户输入 DD/MM/YY。 当我在 post-back 期间单击表单的提交按钮时,我正在调用该函数。我在表单标签中放置了带有 return 的 onsubmit 函数。我对每个日期输入框都一一检查,如果有错误,我会return false。这只会一一检查每个框。 但是,我希望一次检查所有日期输入框,并列出所有错误的而不是一个一个地列出,我也希望在发现错误时停止post返回,我该如何做到这一点?请帮忙。
我把函数放在 onsubmit 和 form 标签中。
<form class="form-horizontal" action="tmemply_det.asp" method="post" onsubmit="return validatedt();">
我输入了 5 个日期,这是其中之一
<div class="form-group">
<label class="col-sm-3 control-label">Date Join : </label>
<div id="div_dt_join" class="col-sm-5 col-lg-3">
<div class="input-group">
<input id="dt_join" name="dt_join" value="<%=dt_join%>" type="text" class="form-control" date-picker>
<div class="input-group-addon">
<i class="fa fa-calendar"></i>
</div>
</div>
<span id="errdt_join" class="help-block"></span>
</div>
</div>
javascript函数
function validatedt(){
var input = document.getElementById("dt_join").value;
var pattern =/^([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})$/;
if (pattern.test(input)==false){
alert("Date Join format is incorrect, please key in DD/MM/YYYY");
document.getElementById('div_dt_join').className += ' has-error'
document.getElementById("errdt_join").innerHTML = "Please key in DD/MM/YYYY"
return false;
}
var input = document.getElementById("dt_confirm").value;
var pattern =/^([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})$/;
if (input.length!=0 && pattern.test(input)==false){
alert("Date Confirm format is incorrect, please key in DD/MM/YYYY");
document.getElementById('div_dt_confirm').className += ' has-error'
document.getElementById("errdt_confirm").innerHTML = "Please key in DD/MM/YYYY"
return false;
}
var input = document.getElementById("dt_resign").value;
var pattern =/^([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})$/;
if (input.length!=0 && pattern.test(input)==false){
alert("Date Resign format is incorrect, please key in DD/MM/YYYY");
document.getElementById('div_dt_resign').className += ' has-error'
document.getElementById("errdt_resign").innerHTML = "Please key in DD/MM/YYYY"
return false;
}
var input = document.getElementById("dt_DOB").value;
var pattern =/^([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})$/;
if (pattern.test(input)==false){
alert("Date of Birth format is incorrect, please key in DD/MM/YYYY");
document.getElementById('div_dt_DOB').className += ' has-error'
document.getElementById("errdt_DOB").innerHTML = "Please key in DD/MM/YYYY"
return false;
}
var input = document.getElementById("dt_WorkPEx").value;
var pattern =/^([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})$/;
if (input.length!=0 && pattern.test(input)==false){
alert("Work Permit Expiry Date format is incorrect, please key in DD/MM/YYYY");
document.getElementById('div_dt_WorkPEx').className += ' has-error'
document.getElementById("errdt_WorkPEx").innerHTML = "Please key in DD/MM/YYYY"
return false;
}
}
循环是你的朋友。
function validatedt(){
var success = true;
var inputData = ['Join', 'Confirm', 'Resign', 'of Birth', 'Work Permit Expiry'];
for (var i = 0; i < inputData.length; i++) {
var key = inputData[i].toLowerCase();
var msg = "Date " + inputData[i];
//Deal with edge cases where naming doesn't follow convention
if (inputData[i] === 'of Birth') {
key = 'DOB';
}
else if (inputData[i] === 'Work Permit Expiry') {
key = 'WorkPEx';
msg = inputData[i];
}
var input = document.getElementById("dt_" + key).value;
var pattern =/^([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})$/;
if (pattern.test(input)==false){
alert(msg + " format is incorrect, please key in DD/MM/YYYY");
document.getElementById('div_dt_' + key).className += ' has-error'
document.getElementById("errdt_" + key).innerHTML = "Please key in DD/MM/YYYY"
success = false;
}
}
return success;
}
为了更新多个错误,我们不直接return假。相反,我们存储一个值为 true 的变量 "success",因此如果一切正常,它将 return 为真。如果有任何错误,它将 return false,因为我们在检测到错误时更改变量。一旦我们检查完所有内容,我们只会 return。