javascript - 验证输入数组只需要在 JavaScript 中填充一个 1 随机字段

标签 javascript jquery validation

我想使用 JavaScript 或 jQuery 验证包含(用户名、类型、请求)的 5 行字段的数组输入,条件是只需要一行并且是随机行。所以,管理员可以填写Name 3Name 5 ,任何管理员想要填写的地方。

我仅使用 name[] 在 PHP 中成功验证了它和foreach ,但在javascript中我只能用 name+$i 来做到这一点。但该验证与我的 PHP 要求有很大不同。

<form action="x" method="post">
<?php for ($i=1; $i<=5; $i++) { ?>
   <div>
      <span id="username-error<?php echo $i; ?>"></span>
      <label>Name <?php echo $i; ?></label>
      <select name="username[]" id="username<?php echo $i; ?>">
         <option>user 01</option>
         <option>user 02</option>
         <option>user 03</option>
      </select>
   </div>
   <div>
      <span id="type-error<?php echo $i; ?>"></span>
      <label>Type</label>
      <select name="type[]" id="type<?php echo $i; ?>">
         <option>type 01</option>
         <option>type 02</option>
         <option>type 03</option>
      </select>
   </div>
   <div>
      <span id="request-error<?php echo $i; ?>"></span>
      <label>Request</label>
      <input type="text" name="request[]" id="request<?php echo $i; ?>">
   </div>
   <button type="submit" id="submit">Submit</button>
<?php } ?>
</form>

我的 jQuery 代码 submit点击:

$("#submit").on("click", function() {
for (var i = 1; i<=5; i++)
{
   var name = $("#username"+i).val();
   var type = $("#type"+i).val();
   var request = $("#request"+i).val();
   if (i == 1)
   {
      if (name == '') {
         $("#username-error"+i).html('User '+i+' name must be selected');
         return !1;
      }
      else if (type == '') {
         $("#type-error"+i).html('Type '+i+' name must be selected');
         return !1;
      }
      else if (request == '') {
         $("#request-error"+i).html('Request '+i+' name must be filled');
         return !1;
      }
   }
   // else ... no problem here only validate if name selected,
   // other fields like type and request must be selected and filled ...
}
});

我只能检查 Javascript 中固定字段(使用 i = 1 )的表单是否为空。这意味着管理员必须在第一行填写它,因此这与我的 PHP 验证不同,我的 PHP 验证可以接受任何行的输入,并且只需要一行。

我需要的 JavaScript 或 Jquery 验证规则:

1. After pages & form (5 rows -> name,type,request) load
2. Button submitted click without fill any form
   > Alert message (at least one row are filled !)
3. Fill 1 complete user, type and request data on random rows, example row 3 (Name 3)
4. Click on submit again, then success process data

Validation rules in diagram example

因此,在验证规则中,它将与我的 PHP 具有相同的条件,它可以填充管理员想要的任何行。不只是在 i = 1 .

我不知道如何检查 JavaScript 来验证只需要 1 行字段,并且它是随机行,因此我可以将其填充到 i = 3i = 4 .

即使如此,也可以使用 find('input[name="username[]"]').val()) .

最佳答案

  1. JS 没有 elseif。
  2. 只是循环,如果最后没有任何内容,则给出错误
  3. 为表单提供 ID 并使用提交事件
  4. 切勿在表单上使用 name="submit"或 id="submit"
$("#formId").on("submit", function(e) {
  var name = "";
  $("#username-error").empty(); // clear errors

  $("[id^=username]").each(function() { // any field id=username*
    name = $(this).val();
    if ($.trim(name) !== '') return false; // stop loop, something was filled
  });
  if (name == "") { // no names were filled, alert on the first
    $("#username-error").html('At least one name must be selected'); // any of them, right?
    e.preventDefault(); // stop submission
  }
});

Full example - ignores other fields if name is not filled

Example that does not allow partial input

关于javascript - 验证输入数组只需要在 JavaScript 中填充一个 1 随机字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47843609/

相关文章:

jquery - 触发 jquery btn 1,2,3,4 -

javascript - if 语句中的多个条件 : Need for validating undefined before checking other conditions

javascript - 无法更改 jquery ui datepicker 中的日期格式

javascript - 通过 Javascript 中的映射函数传入 key

javascript - 嵌套三元运算符可接受的格式是什么?

JavaScript 类型错误 : xxx is not a function

jquery - JQuery中鼠标悬停和鼠标悬停时停止和继续动画的方法

php 电子邮件验证(filter_validate_email)不起作用

java - hibernate validator 奇怪的 IOException : Stream closed

javascript - 手机上的摄像头控制不适用于 babylonjs vr