jQuery UI Datepicker防止模糊事件的日期选择
jQuery UI Datepicker prevent blur event on date select
我有一个jQuery UI日期选择器,并将其用于内联编辑,即我最初显示日期作为标签,点击它由可编辑的日期选择器和选择,我做2件事;a)在模型中设置选定的日期(并在我的changeAction方法中进行一些验证)和B)将日期文本框替换为标签(以显示选定日期)
我的问题是我如何防止模糊事件时,任何日期被选中?我希望blur事件只有在用户没有选择任何日期,只是点击退出时才会被触发。
下面是我的代码;$(document).on("change", ".datePicker", function () {
var dataValid = $(this).attr('data-valid');
if (dataValid == "Y") {
var currElmModelId = $(this).attr('data-model-id');
var currElmModelAttr = $(this).attr('data-model-attr');
var divEle = $('<div />', {'class': 'editableDateTxt','name':currElmModelAttr, 'data-model-attr':currElmModelAttr,'data-model-id':currElmModelId,'html':$(this).val()});
var parent = $(this).parent();
parent.append(divEle);
$(this).remove();
}
});
$(document).on("blur",".datePicker", function () {
if (this.hasAttribute('data-model-id')) {
var dataValid = $(this).attr('data-valid');
if (typeof dataValid == "undefined" || dataValid == "Y") {
var currElmModelId = $(this).attr('data-model-id');
var currElmModelAttr = $(this).attr('data-model-attr');
var divEle = $('<div />', {'class': 'editableDateTxt','name':currElmModelAttr, 'data-model-attr':currElmModelAttr,'data-model-id':currElmModelId,'html':$(this).val()});
var parent = $(this).parent();
parent.append(divEle);
$(this).remove();
return false;
}
}
});
changeAction: function (event) {
var self = this;
// my custom code to set the date in model and do some validations
}
On "change"事件add data-previous -event =" changed"
$(document).on("change", ".datePicker", function () {
var dataValid = $(this).attr('data-valid');
if (dataValid == "Y") {
var currElmModelId = $(this).attr('data-model-id');
var currElmModelAttr = $(this).attr('data-model-attr');
var divEle = $('<div />', {'class': 'editableDateTxt','name':currElmModelAttr, 'data-model-attr':currElmModelAttr,'data-model-id':currElmModelId,'html':$(this).val()});
var parent = $(this).parent();
parent.append(divEle);
$(this).remove();
}
$(this).data("previous-fired-event", "change");
});
如果模糊事件调用更早,然后改变,在jQuery中添加注册回调之前的模糊事件。这很容易做到,我想你自己已经做到了。
然后在模糊事件上添加:
$(document).on("blur",".datePicker", function () {
if ($(this).data("previous-fired-event") === "change")
return;
$(this).data("previous-fired-event", "blur");
if (this.hasAttribute('data-model-id')) {
var dataValid = $(this).attr('data-valid');
if (typeof dataValid == "undefined" || dataValid == "Y") {
var currElmModelId = $(this).attr('data-model-id');
var currElmModelAttr = $(this).attr('data-model-attr');
var divEle = $('<div />', {'class': 'editableDateTxt','name':currElmModelAttr, 'data-model-attr':currElmModelAttr,'data-model-id':currElmModelId,'html':$(this).val()});
var parent = $(this).parent();
parent.append(divEle);
$(this).remove();
return false;
}
}
});
相关文章:
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- Javascript:如何在onChange事件期间更改日期时间值
- jQuery完整日历添加事件,仅包含月份和日期
- 可以'如果我隐藏某些日期,则不要在FullCalendar中拖动事件
- 从datetimepicker引导程序上点击的日期获取点击事件
- 如何将事件的日期放入fullcalendar中的日期对象中
- Day在完整日历中单击特定日期的事件警报
- 日期选择器更改事件抛出”;TypeError:字符串不是函数;
- 带有日期选取器的事件
- EditableField的JQuery Catch-onChange事件-日期选择器
- 如何在全日历中使用事件日期删除事件
- 使用 JavaScript 检查事件日期是否有效
- 完整日历日单击并删除了时区更改的事件日期问题
- DatePicker、FullCalendar和MySQL事件日期最终会缩短一天
- 检查日期和显示直到事件日期
- 事件日期的FullCalendar警报
- 我想在谷歌地图上显示事件日期标记
- 我需要计算申请日期和事件日期之间的天数
- 字段'事件日期'类型'日期时间'不能在查询筛选器表达式中使用
- 将用户直接带到事件日期与当前日期匹配的页面(分页)