javascript - JQuery:验证表单中的所有输入

标签 javascript jquery html forms validation

我需要将相同的 jquery 验证规则应用于表单中表格的 name="time" 的所有输入。 html代码:

<form id="thresholds">
    <table id="table" width="100%"> 
        <thead> 
        <tr> 
            <th width="35%">Service Name</th> 
            <th width="65%">Threshold</th>        
        </tr> 
        </thead> 
        <tbody> 
        <tr> 
            <td>Srv1</td> 
            <td><input id="Srv1" name="time"></input></td>        
        </tr> 
        <tr> 
            <td>Srv2</td> 
            <td><input id="Srv2" name="time"></input></td>  
        </tr>
        <tr> 
            <td>Srv3</td> 
            <td><input id="Srv3" name="time"></input></td>        
        </tr> 
        </tbody> 
    </table>                    
</form>

输入中的所有值均应为有效时间戳。方法是

$.validator.addMethod("time", function (value, element) {
    return this.optional(element) || /^(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])(:([0-5]?[0-9]))?$/i.test(value);
}, "Please enter a valid time.");

$("#thresholds").validate({
    rules: {
        time: {
            required: true,
            time: true
        }
    }
});

这样,规则仅评估第一个输入“Srv1”。

我也需要它来影响 Srv2 和 Srv3,即所有

$('input[name="time"]').

预先感谢您的帮助。

最佳答案

问题不在于验证器或选择器。他们都是正确的。在代码的更多行中,我尝试根据表单状态启用/禁用“提交”按钮:

$('input[name="time"]').on('keyup blur', function () { 
               if ($('#thresholds').valid()) {                   
                 $('#run').prop('disabled', false);                         
               } else {
                   $('#run').prop('disabled', true);                        
               }
           }); 

出于某种原因,即使输入无效或为空,条件 $('#thresholds').valid() 也始终返回 TRUE。验证似乎不太有效。

单独验证每个输入解决了问题:

  $('input[name="time"]').on('keyup blur', function ()   { 
     if ($('#thresholds').validate().element($(this))) {                   
         $('#run').prop('disabled', false);                      
      } else {
         $('#run').prop('disabled', true);                        
      }

});

关于javascript - JQuery:验证表单中的所有输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30309336/

相关文章:

javascript - 我怎样才能去掉签名板上的中间线

jQuery 背景位置动画

html - CSS :first-child selector works如何

javascript - 用于更改插入时输入值的 Angular Directive(指令)

javascript - php强制页面重新加载包括

javascript - Controller 中未定义的服务

javascript - 如何管理 Vue.js 复选框组件上的复杂状态行为?

javascript - 在JavaScript中使用 'prototype'和 'this'?

javascript - 文本颜色填充 CSS 过渡

javascript - 从列表中查找单词并将每个单词包装在一个跨度中?