2015-07-19 76 views
0

我为我的表单添加了jQuery验证插件,并使用了select2插件。对于检查选择2验证我添加ignore: "",为validatioin插件这样的:jQuery验证在select2标签中不起作用

$("#form").validate({ 
    ignore: "", 
    rules: { 
     tags: { 
      required: true, 
     }, 
    }, 
    messages: { 
     tags: { 
      required: "error ! required field", 
     }, 
    }, 
    highlight: function (element) { 
     $(element).closest('.form-control').addClass('has-error'); 
    }, 
    unhighlight: function (element) { 
     $(element).closest('.form-control').removeClass('has-error'); 
    }, 
    errorElement: 'div', 
    errorClass: 'help-block', 
    errorPlacement: function (error, element) { 
     if (element.parent('.input-group').length) { 
      error.insertAfter(element.parent()); 
     } else { 
      error.insertAfter(element); 
     } 
    } 
}); 

这个工作和演出所需的信息,但是当我选择标签,表单验证无法正常工作,而不是删除所需的消息。如何解决这个问题?!

DEMO

+0

这是3.5.x的超级常见的请求([相关GitHub的票(https://github.com/select2/select2/issues/215))和它被固定为4.0.0。 –

回答

0

jQuery的验证插件是由某些用户事件自动触发。但是,由于Select2在后台动态更改隐藏的input值,因此不会自动触发验证。

只需要一个change处理程序,只要隐藏元素的值发生更改,就会以编程方式触发验证测试。

$('input[name="tags"]').on('change', function() { 
    $(this).valid();  
}); 

DEMO:http://jsfiddle.net/X6V2s/194/