Лучшее решение, которое я придумал, было сделать это самостоятельно.Это занимает много шагов.Во-первых, вам нужно запретить все клавиши, кроме возврата (и, возможно, удаления) для ввода текста в DatePicker.Я сделал это с помощью следующего кода.
$(document).keydown(function(e){
var elid = $(document.activeElement).is('#yourDatepicker');
if(e.keyCode === 8 && elid ){
return true; //allow the backspace character
}
else {
return false; //disallow all other characters
}
});
Это нормально, но затем я заметил, что пользователь может удалить только часть даты, а не всю.Мне это не понравилось, поэтому я решил выделить текст.Я должен был учитывать фокусировку текста и щелчок, когда уже был в фокусе.
Я сделал это с помощью следующего кода:
//When you click the text box, select all text.
$('#yourDatepicker').focus(function() {
var $this = $(this);
$this.select();
window.setTimeout(function() {
$this.select();
}, 1);
// Workaround for chrome
function mouseUpHandler() {
$this.off("mouseup", mouseUpHandler);
return false;
}
$this.mouseup(mouseUpHandler);
//When in focus, make it so the text is still selected after a click.
$this.click(function() {
window.setTimeout(function() {
$this.select();
}, 1);
// Workaround for chrome
function mouseUpHandler() {
$this.off("mouseup", mouseUpHandler);
return false;
}
});
});
Иногда вам также нужно взглянуть на случай текстового поляоставаясь в фокусе после изменения даты.Я решил убрать фокус с текстового поля, но вы также можете выполнить функцию выбора, аналогичную приведенной выше.Чтобы снять фокус, вы фактически используете «onSelect» DatePicker.
Например:
//A date change has occurred
$('#yourDatepicker').datepicker({
stuff: 'stuff',
morestuff: 'moreStuff',
onSelect: function() {
$(this).blur(); //This takes the focus off of the textbox
}
});
Как уже говорилось ранее, вы можете заменить эту функцию той, которая используется для фокусировки / щелчкадело.Наконец, вам необходимо учесть пользователя, пытающегося вставить текст в поле.Вот мой код:
//NO PASTES ALLOWED!!!!!
$('#yourDatepicker').bind('paste', function(e) {
e.preventDefault();
});