如果单击iframe,jquery Datepicker不会调用blur函数

时间:2014-07-30 08:24:10

标签: datepicker ckeditor jquery-ui-datepicker

我有一个页面,其中有一个日期字段和一个CKeditor textarea(在textarea位置创建一个iframe)。在日期选择器上,我已经定义了一个模糊函数来检查日期有效性,它可以正常工作。

然而,问题是当我点击一个日期选择器字段时,日历弹出窗口生成然后我输入一个无效的日期,然后点击内部ckeditor,日历保持打开但焦点丢失但模糊功能仍然没有。被叫。因此无效的日期会发送到服务器(我需要对此日期字段进行客户端验证)enter image description here

$(function(){
    $(".dateClass").datepicker({
        changeMonth : true,
        changeYear : true,
        yearRange: "-10:+10",
        dateFormat : "dd/mm/yy",
        buttonText : "Choose",
        showOtherMonths : true,
        selectOtherMonths : true            
    });



    $(".dateClass").blur(function(){
       if(this.value!=undefined && this.value!=null && this.value.replace(/^\s+|\s+$/g, '')!=''){
            if(!isDateValid(this.value) && calendarOpen==0){
                alert('Please enter a valid date in dd/mm/yyyy format');
                this.focus();
            }
       }
    });
});

CKeditor实际上是在页面中嵌入iframe。 当用户点击日期字段然后点击iframe时,如何调用模糊功能?

2 个答案:

答案 0 :(得分:2)

thnx我通过解决方法让它发挥作用

document.onfocusout = function(e){ //for IE8 and lesser 
    if( e === undefined ){
        //keeping validations here
     }
}

$(window).blur( function(e){ //for other browsers –
  if( e !== undefined ){
        //keeping validations here
   }

}

答案 1 :(得分:0)

使用onSelect作为您所需的情况

$(" .dateClass&#34)日期选择器({。  changeMonth:true,changeYear:true,  yearRange:" -10:+ 10",dateFormat:" dd / mm / yy", buttonText:"选择",showOtherMonths:true,  selectOtherMonths:true, onSelect:function(dateText,inst){var date = $(this).val(); var time = $(' #time')。val();提醒(' on select triggered'); } });

对于未格式化的代码,我们深表歉意。 希望它会有所帮助 http://forum.jquery.com/topic/jquery-datepicker-onblur