Javascript - 验证 onSumbit 动态输入


Javascript - verify onSumbit dynamic inputs

我有一个表单,它获得动态<input type="text" />依赖于值 - 来自数据库- ,如下所示:

<form id="data" name="data" method="post" action="..." onSumbit="return VerifyFields()">
<?php
   for ($x=0; $x<count($List); $x++) {
?>
<tr>
   <td> <?php echo $description; ?>  </td>
   <td> <input type="text" name="txt_glo_<?php echo $x; ?>" id=""txt_glo_<?php echo $x; ?> />  </td>
</tr>
<?php
   }
?>
</form>

Javascript:

<script type="text/javascript>
   function VerifyFields(){
      var glo = $("#txt_glo_%").val();
      if (glo == ""){
        alert("EMPTY");
        return false;
      } else {
         return true
      }
   }
</script>

提交表单之前,我需要验证 JavaScript 中是否txt_file_<?php echo $x; ?> == " ",但我不知道该怎么做?

谢谢你的回答。问候

有多种方法可以实现此目的。我更喜欢的是为所有字段提供相同的类,例如 validateNotEmpty .

<input class="validateNotEmpty" type="file" ...
<input class="validateNotEmpty" type="text" ...

您甚至可以将其用于循环外部设置的所有字段。现在你需要在提交时检查.each元素(假设你使用的是jQuery)。

$('form#data').submit(function(){
    var allValid = true;
    $('input.validateNotEmpty').each(function(){
        if ($(this).val() == "" && allValid) {
            alert("please fill in all required fields");
            allValid = false;
            return; // break .each()
        }
    });
    //other validation
    return allValid;
});

演示

这是一个jQuery解决方案(看起来你已经在使用jQuery了):

var glos = $("input[id^=txt_glo_]");
for(var i=0;i<glos.length;i++){
    var val=$(glos[i]).val();
    if(val==""){
        alert("EMPTY");
        return false;
    }
}
return true;

这将遍历每个 id 以 txt_glo_ 开头的输入,并检查其值。

有关属性选择器的更多信息,请参阅此 MDN 文章。

这是一个工作演示:JSFiddle。