问题描述
我有一个 Web 表单向导,需要对其进行验证,该验证支持 (a) 隐藏字段和 (b) 条件验证。 Jquery 似乎是最合适的。全部设置如下(简化示例):
$( "form[name=form]" ).validate({
...
ignore: [],
rules: {
'form[owner]': {
required: true,
},
'form[bank_account]': {
required: true,
depends: function(element){
return $('#my_select').is(':checked');`
messages : {
'form[owner]' : {
required: "The owner is necessary",
},
'form[bank_account]' : {
required: "This field must be filled out when switch on",
},
...
})
错误描述
- 我通过提交表单而不填写上面列出的字段来强制验证出错。
- 就我而言,由于有向导,我会输出带有警报的消息,因为错误一开始是不可见的。
- 我返回表单,仅填写所有者,然后尝试通过提交再次强制验证失败,并选中my_select
- 尽管仍有一个字段无效,但验证已通过(并提交了表单),导致服务器端出现错误。
在 JavaScript 控制台上,我收到以下错误:
Cannot read property 'call' of undefined. Exception occurred when checking element form[bank_account], check the method depends
预期结果
所有字段都应根据表单验证每次提交表单时进行相应验证
如何解决这个问题?
最佳答案
因为我没有发现任何与我类似的问题。我找到的解决方案如下:
不要使用 depends
方法,而是使用函数来确定该字段是否应该是必需的,并将其包含在此操作应依赖的条件中(即,如果选中了复选框)或不)
$( "form[name=form]" ).validate({
...
ignore: [],
rules: {
'form[owner]': {
required: true,
},
'form[bank_account]': {
required: function(element){
return $('#my_select').is(':checked') && $('form_bank_account').val();
messages : {
'form[owner]' : {
required: "The owner is necessary",
},
'form[bank_account]' : {
required: "This field must be filled out when switch on",
},
...
})
要么文档令人困惑,要么库有错误。
关于javascript - 错误 jquery 验证插件取决于。当字段无效时表单有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48183462/