1

我有一个表单,我想验证一个文本区域:

<form action="" id="dialog">
        <textarea name="message-text" class="message-text" rows="5" cols="30" required="true" style="margin-top: 35px;margin-bottom: 25px"></textarea>
        <span style="color: red; display: none" class="error-message">An error occured while sending the message.</span>
        <a href="" class="button send-message">Send</a>
        <a href="" class="button cancel-sending">Cancel</a>
</form>

当我打电话

$('#dialog').valid()

它返回一个空的textarea,true而我希望它返回false。在内部,当它为表单收集规则时,由于某种原因,当属性的值是并且所需的方法返回时,值element.attr('required')最终会变为。我不确定这些东西是什么意思,但可能它们与回归有关,而不是我所期望的。'required''true''dependency-mismatch'valid()truefalse

我在这里做错了什么?

编辑:对不起我在问题上的错误,我的意思.valid()不是.validate()

4

1 回答 1

1

引用操作:

当我$('#dialog').validate()使用空文本区域调用时,它返回 true,而我希望它返回 false。在内部,当它为表单收集规则时, element.attr('required') 的值由于某种原因在属性值为“true”并且所需方法返回“dependency-mismatch”时最终被“required”。我不确定这些东西是什么意思,但可能它们与 validate() 返回 true 而不是我期望的 false 相关。

我在这里做错了什么?

我不知道你想在这里做什么。该.validate()方法通常只用于一件事......在您的表单上初始化插件,并且您只会在 DOM 就绪时调用它一次。

$(document).ready(function() {

    // initialize the plugin with your options
    $('#dialog').validate({
        // rules, options, and callback functions
    });

});

演示:http: //jsfiddle.net/WHheY/


如果您正在寻找一个布尔值来告诉您表单的状态,您将需要随后调用.valid()方法......这就是它的用途。请参阅: https ://stackoverflow.com/a/18221081/594235

if ( $('#dialog').valid() ) {
    // something to do when the form is valid
};

它还会触发验证...

$('#dialog').valid();  // trigger a test

演示:http: //jsfiddle.net/WHheY/2/


否则,您通常只使用submitHandler仅在提交事件发生时在有效表单上触发的回调函数。

$(document).ready(function() {

    $('#dialog').validate({
        // rules, options, and callback functions,
        submitHandler: function(form) {
            // your ajax
            return false
        }
    });

});

演示:http: //jsfiddle.net/WHheY/4/

于 2013-08-30T14:06:00.077 回答