use*_*659 2 jquery jquery-validate jquery-select2
尝试在select2上使用验证,但有一些问题:
将显示错误消息,但输入有效条目时不会删除.
我正在加载一个工作正常的初始值...然而,验证器无法识别该值并告诉我它无效...我必须手动输入相同的值然后验证,但仍然不会删除显示它的错误类/消息是有效的.
形式:
<div class="col-md-12 margin-bottom-30 form-group">
<div class="input-modal-group">
<label for="vedit-filter" class="f-14"><b>filter :</b></label>
<input id="vedit-filter" type="text" name="settings[filter]" class="form-control select2"/>
</div>
</div>
<input id="filter_default" type="hidden" name="settings[original]" value="<?php echo escapeStr($result[filter]); ?>"/>
Run Code Online (Sandbox Code Playgroud)
js:
// get the default filter
var default_filter = $("#filter_default").val();
$("#vedit-filter").select2({
//placeholder: "Select or enter...",
allowClear: true,
multiple: false,
ajax: {
dataType: 'json',
url: '/process/get_filter_list.php',
results: function (data) {
return {results: data};
}
},
createSearchChoice:function(term, data) {
if ($(data).filter(function() {
return this.text.localeCompare(term)===0; }).length===0) {
return {id:term, text:term};
}
},
initSelection : function (element, callback) {
var obj= {id:default_filter, text:default_filter};
callback(obj);
}
});
$('#filters-edit').validate({
errorElement: 'span', //default input error message container
errorClass: 'help-block', // default input error message class
focusInvalid: false, // do not focus the last invalid input
rules: {
'settings[filter]': {
required: true
}
},
messages: {
'settings[filter]': {
required: "Filter is required."
}
},
highlight: function (element) { // hightlight error inputs
$(element)
.closest('.form-group').addClass('has-error');
},
unhighlight: function (element) { // un-hightlight error inputs
$(element)
.closest('.form-group').removeClass('has-error');
},
errorPlacement: function (error, element) {
error.insertAfter(element.closest('.input-modal-group'));
},
// ajax submit
submitHandler: function (form) {
...submit stuff below
Run Code Online (Sandbox Code Playgroud)
默认情况下,字段上的验证仅由这些事件触发(对于type="text"字段)...
onfocusout,当用户离开字段时(仅验证字段)
onkeyup,当用户在字段中键入时(仅验证字段)
onclick,当用户单击submit按钮时(验证整个表单)
如果在以编程方式更改字段的值后需要以编程方式触发验证,则需要在该字段上调用该.valid()方法.它将有效地触发与上述事件类似的验证.
$('#myField').valid(); // validates just field element with id="myField"
$('#myForm').valid(); // validates the whole form
Run Code Online (Sandbox Code Playgroud)
因此,您需要在select2中找到一个方法,只要值被更改并放入其中,就会触发该方法.valid().它看起来像的change事件是你所需要的.
$("#vedit-filter").select2({
// your options here
}).on('change', function() {
$(this).valid();
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6258 次 |
| 最近记录: |