jquery 验证插件,仅验证当前屏幕的表单字段

jquery validate plugin, validating form fields of only current screen

我正在使用 jquery 验证插件来验证表单字段。我也在使用 jqtree 。单击每个子节点时,用户可以看到一段表单,应该用 values.For 填充每个子节点都有一个表单内容要填写。整个树的内容仅在一种形式中声明。我在表单中有一个按钮,单击它会生成 json 文件。我正在调用下面的函数来验证表单

$("myform").validate();
....
if($("#my-form).valid())
   generate the json file

但这并没有验证整个表单。假设我在 childNode1 上,它只验证为 childNode1 定义的表单部分。据我所知,jquery 验证插件应该在指定正确的表单 ID 时验证整个表单。但是谁能告诉我我的方法出了什么问题?

.validate()方法没有"validate the form"。它只初始化表单上的插件。 .valid() 将以编程方式触发验证测试。


您的代码:

$("myform").validate();
....
if($("#my-form).valid())
   generate the json file
  1. $("myform") - 应该是 idclass 还是 name?如您所写,它正在寻找 <myform></myform> 元素。

    $("#myform")         // id="myform"
    $(".myform")         // class="myform"
    $("[name='myform']") // name="myform"
    
  2. 您的 form 元素是 myform 还是 my-form?如果它是相同的 <form> 元素,那么两个 jQuery 选择器将是相同的。

  3. $("#my-form) 缺少右引号。

如果 <form> 元素的 id"myform",那么您的代码应该是...

$("#myform").validate();      // <- initialize the plugin
....
if ($("#myform").valid()) {   // <- test the form's validity
   // generate the json file
   ....
}

OP Title: jquery validate plugin, validating form fields of only current screen

你的问题好像与标题无关。您的 OP 中只描述了一种形式,因为这是 JavaScript,所以只有浏览器中加载的页面是相关的。不确定 "current screen".

是什么意思

but this is not validating the entire form. suppose I am on childNode1 it validates only form section defined for childNode1. As far as I have understood jquery validate plugin should validate entire form when correct form id is specified.

默认情况下,插件不会验证任何隐藏的表单域。您可以操纵 ignore 选项来 over-ride 此行为。将 ignore 设置为 [] 将告诉插件忽略任何内容并验证所有字段,包括隐藏的字段。