验证验证返回true,表单上有空的必填文本区域

时间:2013-08-30 10:28:26

标签: jquery jquery-validate

我有一个表单,我想验证textarea:

<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()

使用空文本区域,它返回true,而我希望它返回false。 在内部收集表单规则时,如果属性值为element.attr('required')并且所需方法返回'required',则'true'的值由于某种原因最终为'dependency-mismatch'。我不确定这些内容是什么意思,但可能与valid()有关true而不是false正如我预期的那样。

我在这里做错了什么?

修改:对不起我在问题中的错误,我的意思是.valid()而不是.validate()

1 个答案:

答案 0 :(得分:1)

引用OP:

  

当我用空的textarea调用$('#dialog').validate()时,它返回true而我   期望它返回虚假。在内部收集规则时   形成element.attr('required')的值最终成为'required'   由于某种原因,属性的值为'true'而且   required方法返回'dependency-mismatch'。我不确定这些是什么   事情意味着但可能它们与validate()返回有关   是真的,而不是我所期望的那样。

     

我在这里做错了什么?

我不知道你在这里尝试做什么。 .validate()方法通常仅用于表示初始化表单上的插件,并且您只能在DOM就绪时将其称为一次。< / p>

$(document).ready(function() {

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

});

DEMO http://jsfiddle.net/WHheY/


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

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

它还会触发验证...

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

DEMO http://jsfiddle.net/WHheY/2/


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

$(document).ready(function() {

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

});

DEMO http://jsfiddle.net/WHheY/4/