2017-01-05 2 views
-1

Мне нужна помощь в решении этой проблемы. Я хочу ТОЛЬКО backspace и клавиши со стрелками, работающие в поле «Date1». Я видел, что как только он станет полем «datepicker» с кодом ниже, допустимы числовые символы и «/». Могу ли я отключить это, чтобы работали только клавиши backspace и стрелки? Не хочу, чтобы люди набрав в случайных чисел ..Как отключить числовой ввод datepicker?

<script> 
 
var dateToday = new Date(); 
 
$(function() { 
 
    $("#Date1").datepicker({ 
 
     numberOfMonths: 1, 
 
     showButtonPanel: true, 
 
     minDate: dateToday 
 
    }); 
 
}); 
 
</script> 
 

 
<script> 
 
var o = document.getElementById('Date1'); 
 
o.addEventListener('keydown', function(e) { 
 

 
    if(e.keyCode >= 37 && e.keyCode <= 40) { 
 
     return; 
 
    } 
 
    if(e.keyCode === 8 || e.keyCode === 58) { 
 
     return; 
 
    } 
 
    e.preventDefault(); 
 
}, false); 
 
</script>
<input type="text" id="Date1" name="Date1">

Теперь он работает, как предполагалось. Я не могу использовать все клавиши букв на клавиатуре i

+0

У вас есть HTML-код в JavaScript. Это синтаксическая ошибка. Почему бы не использовать ''? –

+0

Это выглядит плохо. Крайнее поле даты очень плохо. Он работает на моем сайте, так что он показывает выбор даты – MailBlade

+0

Затем используйте плагин datepicker, например, BootStrap Date Picker или что-то еще? –

ответ

0

Почему бы вам не пометить ваш вход readonly="true", чтобы отключить ввод.

<input type="text" id="Date1" name="Date2" readonly="true"> 

Это послужит цели.

Update

Как указано, что очистка поля ввода должно быть разрешено. Пожалуйста, обновите свой слушатель до этого

o.addEventListener('keydown', function(e) {  
    switch(e.keyCode){ 
     case (e.keyCode >= 37 && e.keyCode <= 40): 
     case (e.keyCode === 8 || e.keyCode === 58): 
     case (e.keyCode >= 48 && e.keyCode <= 57); 
      return; 
     default:   
      console.log(e.keyCode); // do something for default 
    }  
    e.preventDefault(); 

}, false);

+0

Спасибо за ваш вклад. Я уже это сделал, но проблема в том, что пользователь не может очистить поле даты. У них должна быть возможность очистить поле. Я попробовал код для добавления кнопки очистки к всплывающей подсказке даты, но он не работал. Так что, если они выбирают дату и хотят ее очистить, они не могут. – MailBlade

+0

Спасибо, я попробую. – MailBlade

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