2013-09-27 2 views
0

Когда я нажимаю на textfield, я получаю раскрывающееся меню, чтобы пользователь мог выбрать значение из списка.Создание текстового поля недействительным, а не только для чтения

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

<input id="datePiccc" type="text" class="dates" /> 
+0

Сделать текстовое поле только для чтения, а затем привязать к событию 'click', чтобы отобразить выпадающее меню – CodingIntrigue

+0

@Johan не будет' disabled = "" 'параметр отключает текстовое поле от вставки? (если он вставляет значения_) – yaqoob

+0

@yaqoob Corrent. Я пропустил вопрос – Johan

ответ

3

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

document.getElementById('datePiccc').onkeydown = function(e){ 
    e.preventDefault(); 
} 

Fiddle Demo


Как указывал NNNNNN, onkeydown является лучшим вариантом, чем onkeypress как это остановит УДАЛИТЬ и забой основные функции.

Вы также можете добавить код ниже, чтобы свести к нулю события вырезания и вставки . (Примечание: ничего не делать для копирования, поскольку эта операция не изменит значение текстового поля).

document.getElementById('datePiccc').oncut = function(e){ 
    e.preventDefault(); 
} 
document.getElementById('datePiccc').onpaste = function(e){ 
    e.preventDefault(); 
} 

Я думаю, что они должны работать во всех браузерах. В настоящее время тестируются в Chrome 31, Opera 15, IE10 и FireFox 24. (Примечание. В IE10 есть отметка x, которая появляется в правой части поля ввода, которая при нажатии очищает все значение поля. Не удалось найти способ это.)

+1

Ваш код (и скрипка) не мешает пользователю изменять значение в поле. Даже игнорируя операции копирования/вырезания/вставки, выполняемые с помощью мыши или меню «Редактировать», ваш код не останавливает работу клавиш удаления или возврата. Вы можете использовать 'onkeydown' вместо' onkeypress', который должен прекратить удаление/backspace, но тогда есть все еще эти надоедливые мыши и/или изменения в меню на основе изменений ... – nnnnnn

+0

@nnnnnn: Да, 'onkeydown' было бы лучше , Согласился на это. Для других дайте мне несколько минут, я пытаюсь принять все это. – Harry

+0

@nnnnnn: Я добавил код для аннулирования событий Cut и Paste. – Harry

3

Я предполагаю, что текстовое поле устанавливается в javascript. Если да, то вы можете использовать следующую строку disable поля:

document.getElementById('datePiccc').disabled=true;

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

2

Отключить вход в JQuery, как

$("#datePiccc").attr("disabled", true); 

И в чистом JS

document.getElementById('datePiccc').disabled = true; 

Может быть, это может помочь!

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