我正在尝试创建一个jquery插件来进行自定义验证。
我有一个jqueryUI日期选择器,可以在输入字段中输入日期。
我正在尝试将一个on change事件附加到由日期选择器填充的输入字段,但它不会被触发。我想因为它没有被用户更改,它正在被JavaScript / jqueryUI更新。
我的问题是如何将更改事件附加到通过JavaScript而不是用户更新的字段?
我的插件代码:
;(function ($, window) {
var validateStuff = function(element){
$(element).on('change', function(event){
console.log( "Handler for .on() called." );
});
};
$.fn.validate = function(options){
return this.each(function(){
var elem = $( this );
validateStuff(elem);
});
};
})(jQuery);
更新
datepicker代码
$('.day-picker').datepicker({
inline: true,
showOtherMonths: true,
dayNamesMin: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
onSelect: function (dateText, inst) {
var startDate = new Date(dateText);
var selDay = startDate.getDate();
var selMonth = startDate.getMonth() + 1;
var selYear = startDate.getFullYear();
var fieldElement = $(this).siblings(".date-field");
var selDay = selDay < 10 ? "0" + selDay : selDay;
var selMonth = selMonth < 10 ? "0" + selMonth : selMonth;
$(fieldElement).val(selDay + "-" + selMonth + "-" + selYear);
}
});
答案 0 :(得分:0)
更改input元素的值时,可以触发change事件:
$(fieldElement).val(selDay + "-" + selMonth + "-" + selYear).change();
也可以写成
$(fieldElement).val(selDay + "-" + selMonth + "-" + selYear).trigger('change');
注意:如果没有传递参数,像change()
这样的事件处理程序方法只会触发事件。