jQuery .validate 在焦点出时抛出异常。"check 'depend' method"说



我正在使用jQuery .valid插件进行jquery表单验证。有一个文本字段(名称:"yo_text"(,仅当选中单选按钮(在本例中为"Hey Yo"(时才需要。

现在jQuery可以判断yo_text取决于选择"Hey Yo",但是每次yo_text模糊并且不为空时都会弹出错误。文本字段中的错误消息也不会消失,如果先前的检查显示它无效(即yo_text为空(

错误:

Uncaught TypeError: Cannot read property 'call' of undefined. Exception occurred when checking element , check the 'depends' method.

我只是修改了代码形式.validate的示例(见下文(,但现在出现了神秘的错误。我不知道问题出在哪里。

所以标记:

<form>
<div class="radio">
<label>
<input type="radio" name="selection" value="yo"> Hey Yo
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="selection" value="ya"> Hey Ya
</label>
</div>
<input class="form-control" type="text" name="yo_text" placeholder="Enter if yo">
<button type="submit" class="btn btn-primary">Submit</button>
</form>

还有剧本:

var form = $('form');
function isYo() {
return form.find('input[type="radio"][name="selection"][value="yo"]')
}
form.validate({
rules: {
selection: 'required'
, yo_text: {
required: true,
depends: isYo
}
}
});

以及我在 .validate 文档中修改的示例:

$("#myform").validate({
rules: {
contact: {
required: true,
email: {
depends: function(element) {
return $("#contactform_email").is(":checked");
}
}
}
}
});

还有一个JSFiddle供参考:

https://jsfiddle.net/vzj1ckbx/

提前感谢您的任何帮助!

你的函数isYo中存在一个问题,我认为它应该返回一个布尔值,但不是。在您的情况下,它将返回元素。在验证中也有一些修改。

https://jsfiddle.net/vzj1ckbx/4/

var form = $('form');
function isYo() {
return $('input[type="radio"][name="selection"][value="yo"]').is(':checked');
}
form.validate({
rules: {
"yo_text": {            
required: {
param:true,
depends: isYo
}
}
},
submitHandler: function () {
alert('Ho hey')
event.preventDefault();
return false;
}
});

最新更新