簡體   English   中英

驗證輸入數組只需要在JavaScript中填充1個隨機字段

[英]Validate input array require only one 1 random fields are filled in JavaScript

我想使用JavaScript或jQuery驗證包含(用戶名,類型,請求)的5行字段中的數組輸入,條件是只需要一行並且它是隨機行。 因此,管理員可以在“ Name 3或“ Name 5處填充它,而無論“管理員”想要填充它的位置。

我成功地僅使用name[]foreach在PHP中對其進行了驗證,但是在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 )的表單是否為空。 這意味着Admin必須在第一行填充它,因此與我的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

圖示例中的驗證規則

因此,在驗證規則中,它將與我的PHP具有相同的條件,它可以在管理員想要的任何行上填寫。 不只是在i = 1

我不知道如何檢查JavaScript以驗證僅需要該字段的一行,並且它是隨機行,因此我可以在i = 3i = 4上填充它。

即使那樣也可以使用find('input[name="username[]"]').val())

  1. JS沒有elseif。
  2. 只是循環,如果最后沒有任何內容,請給出錯誤
  3. 給表單一個ID並使用Submit事件
  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
  }
});

完整示例-如果未填寫名稱,則忽略其他字段

不允許部分輸入的示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM