我有一个表单,要求在提交之前验证输入数据。验证检查的类型(每个输入元素可以超过 1 个)被输入到输入元素中,并且由 jQuery 执行验证。
我的方法是将所有需要的并用逗号分隔的验证类型(例如“blank,email”)放入输入元素的“checks”属性中。然后 jQuery 将提取这部分,将其拆分为一个数组,并循环遍历每个验证类型。
问题是,在所有验证检查完成之前我不想提交表单。但是当我使用“split”函数时,由于它返回一个数组,程序将其视为返回了 bool 值 true,并且在第一个输入元素之后提交表单。
这是表单的示例,请注意它与所有其他字段看起来相似:
<tr>
<td>Full Name</td>
<td><input type="TEXT" name="AccountName" check="blank"></td>
</tr>
<tr>
<td>NRIC</td>
<td><input type="TEXT" name="AccountNRIC" check="blank,nric" maxlength="9"></td>
</tr>
这是 jQuery 验证代码:
// PERFORM VALIDATION CHECKS
$("form").submit(function()
{
// LOOP THROUGH ALL INPUT FIELDS
$("form input, form textarea, form select").each(function()
{
// IF NONE OF THE INPUT'S PARENTS ARE HIDDEN
if($(this).parents(":hidden").length == 0)
{
var thisValue = $(this).val();
var checkWhat = $(this).attr("check");
var checkArray = checkWhat.split(",");
for(var i=0; i<checkArray.length; i++)
{
switch(checkArray[i])
{
case "blank": alert(CheckBlank(thisValue)); break;
case "nric": alert(ValidateNRIC(thisValue)); break;
case "email": alert(ValidateEmail(thisValue)); break;
}
}
}
});
});
我应该澄清一下,由于代码仍在部分测试中,因此尚未添加错误检查变量。
非常感谢任何帮助!
最佳答案
// PERFORM VALIDATION CHECKS
$("form").submit(function()
{
// LOOP THROUGH ALL INPUT FIELDS
$("form input, form textarea, form select").each(function(e)
{
// IF NONE OF THE INPUT'S PARENTS ARE HIDDEN
if($(this).parents(":hidden").length == 0)
{
var _hasError = false;
var thisValue = $(this).val();
var checkWhat = $(this).attr("check");
var checkArray = checkWhat.split(",");
for(var i=0; i<checkArray.length; i++)
{
switch(checkArray[i])
{
case "blank": if (!CheckBlank(thisValue)) { _hasError = true; } ; break;
case "nric": if (!ValidateNRIC(thisValue)) { _hasError = true; }; break;
case "email": if (!ValidateEmail(thisValue)) { _hasError = true; }; break;
}
}
if (_hasError) e.preventDefault();
}
});
});
关于javascript - 如何在提交之前在表单中执行字符串拆分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38705052/