使用jqueryvalidation和选择的插件validation选择框

我试图一起使用validation和选择的插件。 我在validation选择框时遇到了问题。 我发现了类似的问题如何使用“选择”插件进行jQueryvalidation? 和Chosen.js并validationjquery但我找不到将解法导入我的代码的方法:

<input type='hidden' value='' name='pkedit' id='pkedit'>

*<input id='nameedit' name='nameedit' value=''/>

*query($query); if($result->num_rows==0) echo "No unit found. Please define a unit first"; else{ echo ""; while($row=$result->fetch_assoc()) echo "".$row['name'].""; echo ""; } $mysqli->close(); ?>

Save Cancel

jquery代码

 $("#save").click(function () { if($("#producteditform").validate({ ignore: [], rules: { nameedit: { required: true, maxlength:100 }, unitedit:{ required: true, } } }).form() ) { // do sth }) } } 

html渲染输出

 

*

*please choose..kgg

please choose..
  • please choose..
  • kgg

Save Cancel

当我删除class =’selected’当点击保存按钮时一切正常,否则我得到错误未捕获错误:无法validation,发现没有指定名称的元素。 请参阅控制台以获取元素参

尝试这样的事情。

 $(document).ready(function() { // initialize the plugin on DOM ready $("#producteditform").validate({ // all rules and options, rules: { nameedit: { required: true, maxlength:100 }, unitedit:{ required: true, } } }); // test for valid form $('#save').on('click' function() { if($("#producteditform").valid()) { // do this on valid form } else { // do this on invalid form } }); }); 

$('#producteditform').validate()初始化 form上的validate插件 。

$('#producteditform').valid()编程方式触发实际validation测试并返回true/false布尔值。


或者,由于您的event是表单, click submit事件,您只需使用内置的submitHandler回调函数。 (无需创建另一个click处理程序。)

 $(document).ready(function() { // initialize the plugin on DOM ready $("#producteditform").validate({ // all rules and options, rules: { nameedit: { required: true, maxlength:100 }, unitedit:{ required: true, } }, submitHandler: function(form) { // do this on valid form } }); }); 

完整文档:

http://docs.jquery.com/Plugins/Validation


在您显示HTML输出而不是PHP之前,以下是如何validationselect元素的一般示例:

http://jsfiddle.net/6Dt7F/

重要的是, select元素中的第一个或默认option必须包含value=""否则required规则将失败。

  

编辑

我仍然没有足够的代码来制作一个有效的演示。 但是,由于chosen插件隐藏了实际的表单元素,因此您必须执行以下操作…

1)定位要validation的实际表单元素并传递数据,而不是chosen创建的可视元素。

2)通过设置ignore: []选项启用jQuery Validate以处理隐藏的元素 。

试试这个…

 $(document).ready(function () { // initialize the plugin on DOM ready $("#producteditform").validate({ // all rules and options, ignore: [], // <-- option so that hidden elements are validated rules: { name: { // <-- name of actual text input required: true, maxlength: 100 }, unit:{ // <-- name of actual select input required: true } }, submitHandler: function(form) { // do this on valid form } }); }); 

发生这种情况是因为Chosen插入了一个输入字段,用户可以通过下拉列表进行搜索。

出于某种原因,此搜索字段没有名称标记(因此错误):

  

输入也没有类或ID,这可能是控制台错误如此模糊的原因。 快速解决方法是给它一个名字:

 $(".chzn-search input").attr('name', 'chzn-search');