Javascript jQuery UI日期选择器在日期选择时防止模糊事件

Javascript jQuery UI日期选择器在日期选择时防止模糊事件,javascript,jquery,jquery-ui,datepicker,Javascript,Jquery,Jquery Ui,Datepicker,我有一个jQueryUIDatePicker并使用它进行内联编辑,也就是说,我最初将日期显示为标签,然后单击它替换为可编辑的日期选择器,然后选择,我做2件事; a) 在模型中设置所选日期(并在我的changeAction方法中执行一些验证),然后 b) 用标签替换日期文本框(以显示所选日期) 我的问题是,当选择任何日期时,如何防止模糊事件?我希望只有当用户没有选择任何日期而只是单击退出时,才会触发模糊事件 下面是我的代码 $(document).on("change", ".datePicker

我有一个jQueryUIDatePicker并使用它进行内联编辑,也就是说,我最初将日期显示为标签,然后单击它替换为可编辑的日期选择器,然后选择,我做2件事; a) 在模型中设置所选日期(并在我的changeAction方法中执行一些验证),然后 b) 用标签替换日期文本框(以显示所选日期)

我的问题是,当选择任何日期时,如何防止模糊事件?我希望只有当用户没有选择任何日期而只是单击退出时,才会触发模糊事件

下面是我的代码

$(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
}
$(document).on(“更改”,“日期选择器”,函数(){
var dataValid=$(this.attr('data-valid');
如果(数据有效==“Y”){
var currElmModelId=$(this.attr('data-model-id');
var currElmModelAttr=$(this.attr('data-model-attr');
var divEle=$(“”,{'class':'editableDateTxt','name':currElmModelAttr,'data model attr':currElmModelAttr,'data-model-id':currElmModelId,'html':$(this.val());
var parent=$(this.parent();
parent.append(divEle);
$(this.remove();
}
});
$(文档).on(“模糊”,“日期选择器”,函数(){
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=$(“”,{'class':'editableDateTxt','name':currElmModelAttr,'data model attr':currElmModelAttr,'data-model-id':currElmModelId,'html':$(this.val());
var parent=$(this.parent();
parent.append(divEle);
$(this.remove();
返回false;
}
}   
});
changeAction:函数(事件){
var self=这个;
//我的自定义代码用于在模型中设置日期并执行一些验证
}
关于“更改”事件添加数据previouse event=“更改”

$(document).on(“更改”,“日期选择器”,函数(){
var dataValid=$(this.attr('data-valid');
如果(数据有效==“Y”){
var currElmModelId=$(this.attr('data-model-id');
var currElmModelAttr=$(this.attr('data-model-attr');
var divEle=$(“”,{'class':'editableDateTxt','name':currElmModelAttr,'data model attr':currElmModelAttr,'data-model-id':currElmModelId,'html':$(this.val());
var parent=$(this.parent();
parent.append(divEle);
$(this.remove();
}
$(此).data(“先前触发的事件”、“更改”);
});
若之前的模糊事件调用发生了变化,那个么在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;
    }
}   
});
$(document).on(“模糊”,“日期选择器”,函数(){
if($(this).data(“先前触发的事件”)==“更改”)
回来
$(此).data(“上次激发的事件”、“模糊”);
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=$(“”,{'class':'editableDateTxt','name':currElmModelAttr,'data model attr':currElmModelAttr,'data-model-id':currElmModelId,'html':$(this.val());
var parent=$(this.parent();
parent.append(divEle);
$(this.remove();
返回false;
}
}   
});
$(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;
    }
}   
});