2013-04-04 3 views
2

Я использую jquery ui datepicker контроль над текстовым полем, и в то же время я использую onblur событие для проверки. Теперь проблема заключается в том, что при нажатии на текстовое поле и календарь появляется, и когда вы выбираете дату в нем, проверка выполняется в текстовом поле. Я пытаюсь справиться с этим, но все же он появляется на секунду.Как справиться с управлением датпикер?

Вот код

$(document).ready(function() { 

    $("#date").datepicker({ 
     onSelect: function() { 
      $("#span1").css("display", "none") 
     } 
    }); 
}); 

function check() { 
    if ($("#date").val() == "") $("#span1").css("display", "inline-block"); 
} 

Для лучшего понимания здесь jsFiddle link

EDIT: окончательное решение: принимается ближайший ответ первый представленный.

$("#date").datepicker({ 
    onClose: function() { 
     check(); 
    } 
}); 

ответ

1

Вместо того, чтобы размывать поле ввода, вы также можете позвонить, когда закрывается datepicker.

$("#date").datepicker({ 
    onSelect: function() { 
     $("#span1").css("display", "none") 
    }, 
    onClose: function() { 
     check(); 
    } 
}); 
+0

вы удалите ONBLUR из InputBox? работает нормально для меня http://jsfiddle.net/4Vp9D/24/ chrome и ie9 – gary

+0

@ user1390378 - люди просматривают изменения от пользователей с низкой репутацией. Два человека отклонили это изменение - я бы хотел, основываясь на том, что вы принимаете это разрешение, но что вы ДОЛЖНЫ делать, ЕСЛИ это разрешает вашу проблему, добавляет комментарий к этому ответу, принимает этот ответ и помещает отредактированный код и редактирует комментарий в вашем вопросе. –

+0

@Mark Schultheiss: Спасибо за объяснение. Можете ли вы сказать мне, почему эти два человека отвергли это? Поскольку мое редактирование было просто для улучшения ответа. – user1390378

-1

Вместо того, чтобы изобретать собственное колесо, могу ли я предложить использовать этот легкий плагин? http://digitalbush.com/projects/masked-input-plugin/

Он отлично работает с пользовательским интерфейсом jQuery DatePicker и избавит вас от необходимости выполнять собственную проверку в формате даты.

0

setTimeout Использование:

$(document).ready(function() { 
    $("#date").datepicker({ 
     onSelect: function() { 
      $("#span1").css("display", "none") 
     } 
    }); 
}); 


function check() { 
    setTimeout(function(){ 
     if ($("#date").val() == "") 
      $("#span1").css("display", "inline-block") 
      }, 100); 
} 

DEMO: http://jsfiddle.net/dirtyd77/4Vp9D/26/

+0

Прошу прощения за эту же проблему. – user1390378

Смежные вопросы