Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery验证和禁用输入字段_Javascript_Jquery_Twitter Bootstrap_Jquery Validate - Fatal编程技术网

Javascript jQuery验证和禁用输入字段

Javascript jQuery验证和禁用输入字段,javascript,jquery,twitter-bootstrap,jquery-validate,Javascript,Jquery,Twitter Bootstrap,Jquery Validate,我使用下面的引导作为下拉选择器,然后它与相关联的jQuery函数一起在输入中显示choosen字段。但是用户仍然可以在输入字段中编写自己的代码,我希望避免这种情况。我尝试在输入字段中使用disabled属性,但是如果我这样做,jQuery验证插件将忽略它并授予权限,即使它是空的 是否可以使用type=“text”来“停用”输入字段,而不使用disabled属性,这样我仍然可以使用jQuery Validate <div class="form-group"> <div

我使用下面的引导作为下拉选择器,然后它与相关联的jQuery函数一起在
输入中显示choosen字段。但是用户仍然可以在输入字段中编写自己的代码,我希望避免这种情况。我尝试在输入字段中使用
disabled
属性,但是如果我这样做,jQuery验证插件将忽略它并授予权限,即使它是空的

是否可以使用
type=“text”
来“停用”输入字段,而不使用
disabled
属性,这样我仍然可以使用jQuery Validate

<div class="form-group">
    <div class="input-group">
         <div class="input-group-btn">
              <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Choose<span class="caret"></span></button>
              <ul class="dropdown-menu">
                  <li><a href="#" id="a">1</a></li>
                  <li><a href="#" id="b">2</a></li>
                  <li><a href="#" id="c">3</a></li>
                  <li><a href="#" id="d">4</a></li>
                  <li role="separator" class="divider"></li>
                  <li><a href="#" id="e">5</a></li>
              </ul>
         </div>
         <input type="text" id="abc" autocomplete="off" name="abc" placeholder="Select *" class="form-control" aria-label="...">
    </div>  
</div>

选择

似乎您需要使用
readonly=“readonly”
属性

没有直接的解决方案。。。如果该字段通过
disabled
属性“disabled”,jQuery验证插件将始终忽略它。(从逻辑上讲,验证用户无法编辑的内容毫无意义。)

然而,有一个解决办法。如果使用
readonly
属性而不是
disabled
,则可以对其进行验证

<input type="text" name="abc" readonly="readonly" />


演示:

无论这个问题有多严重,都有一个非常简单的解决方法。为什么不在jquery.validate.js忽略的禁用字段之外使用隐藏字段

e、 g


您最好依靠
validator.batherrors()
方法手动验证此禁用的输入

当我需要验证术语复选框时,我遇到了类似的情况,但它被设计为在用户滚动术语文本之前被禁用。 这就是我最后想到的:

        var message = "You must accept the Terms and Conditions in order to proceed with registration";
        var termsValidator = $('#step-5 form').validate({
            rules: {
                acceptTnC: "required"
            },
            messages: {
                acceptTnC: message
            },
            submitHandler : function (form) {
                // Need to manually validate, cause checkbox is disabled by default and validation
                // skips disabled fields
                if(!form.acceptTnC.checked) {
                    termsValidator.showErrors({
                        acceptTnC: message
                    })
                }
                else {
                    submitForm();
                }
            }
        });
        $('[name="acceptTnC"]').on('change', function (e) {
            termsValidator.element(e.target);
        })

底部部分对于启用复选框后切换错误消息很重要,用户可以单击打开或关闭它

,那么相关的JavaScript在哪里?
<select style="display:none;"><option value="sample">Sample</option></select>
        var message = "You must accept the Terms and Conditions in order to proceed with registration";
        var termsValidator = $('#step-5 form').validate({
            rules: {
                acceptTnC: "required"
            },
            messages: {
                acceptTnC: message
            },
            submitHandler : function (form) {
                // Need to manually validate, cause checkbox is disabled by default and validation
                // skips disabled fields
                if(!form.acceptTnC.checked) {
                    termsValidator.showErrors({
                        acceptTnC: message
                    })
                }
                else {
                    submitForm();
                }
            }
        });
        $('[name="acceptTnC"]').on('change', function (e) {
            termsValidator.element(e.target);
        })