使用Validator Plugin Jquery验证动态输入表单元素

时间:2016-02-17 09:21:26

标签: javascript jquery html validation jquery-validate

我正在使用这个http://jqueryvalidation.org/ jquery验证插件。

HTML动态表单将是这样的

forces newbrd1

我的JS代码将是这样的

<form name="baby_book" id="baby_book">
<input name="form_elements[16]" id="form_elements[16]">
<input name="form_elements[17]" id="form_elements[17]">
<input name="form_elements[18]" id="form_elements[18]">

<a class="myfont baby_book_save" href="javascript:void(0)"  onclick="validatefilesizeform('save')" >Save</a> 
</form>

在应用动态规则时,它不会验证表单。

在控制台中显示此错误

未捕获的TypeError:无法读取属性&#39;表单&#39;未定义的

任何人都可以帮我如何添加动态规则。感谢。

1 个答案:

答案 0 :(得分:0)

那是因为当浏览器在validatefilesizeform('save')属性中找到onclick时,它会评估该表达式,即运行该函数。使用此语法,您将该评估的结果与onclick事件相对应,这不是您想要的。

发生Cannot read property 'form' of undefined错误,因为在那一刻,$(document).ready()回调尚未执行,并且当函数尝试执行validator.form()时,该变量已经未定义。它将在$(document).ready()

内稍后初始化

要获得预期的行为并避免错误,您必须将onclick处理程序更改为此处理程序:

`onclick="function() { validatefilesizeform('save') }"`

在这种情况下,您将注册一个函数作为onclick属性的值。单击控件时将评估此函数。

更清楚地说明:

// This is the value returned by the function evaluation:
validatefilesizeform('save')

// This is a function
function() { validatefilesizeform('save'); }

所以第二个是可以评估的函数。第一个评估函数。处理程序应始终是函数,而不是值。