2014-11-14 2 views
6

Я использую клавиши со стрелками ВВЕРХ и ВНИЗ для перемещения по входным значениям.jQuery - Скрыть jQdialog при нажатии клавиши .datepicker

Я пытаюсь скрыть .datepicker при нажатии клавиши со стрелкой вверх или вниз следующим образом: -

$('#booking-docket').keyup(function (e) { 

    if(e.keyCode === 38 && $("#txt-date").is(":focus") || e.keyCode === 40 && $("#txt-date").is(":focus")) { 

     $('#txt-date').datepicker("hide"); 

    } 

}); 

Что происходит в том, что как только #txt-date элемент имеет фокус, он быстро открывается и закрывает datepicker, я думал, добавив .is(:focus), исправит это, но это не тот случай.

Что мне кажется недостающим? (Не уверен, если я могу скрыть DatePicker ТОЛЬКО когда нажатие клавиши уходит из текстового поля?)

HTML КОД

 <div class="booking-right left"> 

      <div class="col-1 left"> 

       <p class="p-lbl-txt left">TELEPHONE:</p> 

       <input type="text" id="txt-telephone" class="input-txt-sml move right" tabindex="5" /> 

      </div> 

      <div class="col-2 left"> 

       <p class="p-lbl-txt left">DATE:</p> 

       <input type="text" id="txt-date" class="input-txt-sml move right" tabindex="7" /> 

      </div> 

      <div class="col-1 left"> 

       <p class="p-lbl-txt left">LEAD TIME:</p> 

       <input type="text" id="txt-lead" class="input-txt-sml move right" tabindex="6" /> 

      </div> 

      <div class="col-2 left"> 

       <p class="p-lbl-txt left">TIME:</p> 

       <input type="text" id="txt-min" class="input-txt-xxsml move right" tabindex="9" /> 

       <input type="text" id="txt-hour" class="input-txt-xxsml move right" tabindex="8" /> 

      </div>    

     </div> 

Я попытался следующие, но не мог заставить его работа: -

$(function() { 
    $("#txt-date").datepicker({ dateFormat: "dd/mm/yy" }); 
}); 

$('#booking-docket').keyup(function (e) { 
    /*Add parentheses in your `if` statement to separate the `AND` and `OR`:*/ 
    if ((e.keyCode === 38 && $("#txt-date").is(":focus"))) { 
     $("#txt-lead").focus();//change focus to an other input 
     $('#txt-date').datepicker("hide");//hide the datepicker 
    } 
}); 
+0

Вы можете также разместить свой HTML? – Scimonster

+0

@Scimonster - добавил (а) это для вас – nsilva

ответ

4

Вы можете использовать что-то вроде этого:

JS:

$('#txt-date').keyup(function (e) { 
    if ((e.keyCode === 38 && $("#txt-date").is(":focus")) || (e.keyCode === 40 && $("#txt-date").is(":focus"))) { 

     if (e.keyCode === 38) $("#txt-telephone").focus(); 
     else if (e.keyCode === 40) $("#txt-lead").focus(); 

     $('#txt-date').datepicker("hide"); 

    } 
}); 

/*Add the datepicker*/ 
$(function() { 
    $("#txt-date").datepicker(); 
}); 

JSFIDDLE: http://jsfiddle.net/ghorg12110/ghwvvkve/2/

+0

Thanks @ Magicprog.fr - Просто попробовал, но он, похоже, не работает с HTML, который я использую, я обновил свой вопрос – nsilva

+0

@nsilva answer and jsfiddle обновлен –

+0

Отлично! Thankyou @ Magicprog.fr - не может наградить очки за 20 часов, хотя :-) – nsilva

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