javascript - 如何在提交之前在表单中执行字符串拆分?

标签 javascript jquery html

我有一个表单,要求在提交之前验证输入数据。验证检查的类型(每个输入元素可以超过 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/

相关文章:

javascript - 要在输入键上将焦点设置在锚定标签上

javascript 加载页面单选检查

javascript - GreaseMonkey @include 约 :newtab

javascript - CSS -(增加)数字作为 CSS 的背景图像

javascript - 准确的长轮询示例?

javascript - 使用对象属性作为图像源

javascript - Math.random() 未声明的标识符

javascript - jQuery - 如何测试链接是否锚定在同一页面上?

javascript - 我如何从javascript中的数组中删除嵌套对象或父对象

javascript - 需要 jQuery.Flot 图例格式方面的帮助