Telerik mvc combobox: запретить запись значения, отличного от списка

#c# #asp.net-mvc #asp.net-mvc-3 #combobox #telerik

#c# #asp.net-mvc #asp.net-mvc-3 #поле со списком #telerik

Вопрос:

У меня есть поле со списком telerik в приложении mvc3, и я хочу запретить пользователю записывать значение, отличное от списка, загружаемого с контроллера.

Частичная помощь заключается в том, чтобы установить ввод текстового поля только для чтения, но затем:
1. Пользователь может фильтровать список по текстовому полю.
2. Пользователь может стереть свой выбор.

Еще одна вещь, о которой я подумал: то, что пользователь вводит в поле выбора, — это значение, а не описание, поэтому мне это нужно, чтобы предотвратить запись текста, отличного от описания, пока значение остается инкапсулированным.

Ответ №1:

Вы все еще хотите, чтобы пользователь мог вводить пользовательский текст? Если нет, вы можете использовать функциональность выпадающего списка, как показано на этой демонстрационной странице.

Если вы все еще хотите, чтобы пользователь мог вводить данные в компонент, но каким-то образом он знает, когда они либо что-то неправильно пишут, либо вводят на один символ больше, чем необходимо, это может быть чрезвычайно сложно. По сути, у вас должен быть какой-то умный JavaScript, который запускается при каждом нажатии клавиши и проверяет текущее значение по списку. Поскольку пользователи довольно быстро набирают текст или их браузеры старые, это может быть очень ненадежным. Кроме того, пользователь может легко отключить JavaScript в любое время, сделав эту функциональность устаревшей.

Я думаю, что ваши лучшие варианты — иметь его как есть, где пользователь может вводить все, что захочет. У вас всегда может быть проверка введенного элемента, и после blur() или POST (что бы ни подходило вашему приложению) появится сообщение, предупреждающее их о недопустимой записи.