Выполняю буквенно-цифровое подтверждение, и теперь я делаю, что пользователь может вводить только буквенно-цифровое значение, а также допускать буквенно-цифровые значения только при вставке. Поэтому я использовал следующее регулярное выражениеРазрешить клавиши со стрелками в регулярном выражении
function OnlyAlphaNumeric(evt) {
var charCode = (evt.which) ? evt.which : event.keyCode;
if ((charCode > 32 && charCode < 48) || (charCode > 57 && charCode < 65) ||
(charCode > 90 && charCode < 97) || charCode > 122) {
return false;
}
else {
return true;
}
}
И для предотвращения копирования и вставки,
function CPOnlyAlphaNumeric(evt) {
$(evt).val($(evt).val().replace(/[^A-Za-z0-9]/g, ' '))
}
Эти две функции призывающую из следующих OnKeyPress и OnKeyUp таких методов, которые приведены ниже, как показано, что
@Html.TextBoxFor(model => model.ProductName, new { @class = "form-
control", @onkeypress = "return OnlyAlphaNumeric(this);", @onkeyup=
"return CPOnlyAlphaNumeric(this);" })
Это работает для буквенно-цифровой проверки, но не позволяет курсору перемещаться влево для редактирования текста. Итак, что изменится, я должен сделать в своем регулярном выражении.
Могу ли я написать этот код без функции «setTimeout» ?. Возможно ли это? –
Если я копирую и вставляю какой-либо текст, тогда «replace» также принимается 500 мс. Поэтому я не хочу использовать функцию setTimeout. Пожалуйста, помогите мне, если вы знаете другое решение @ Viktor Bahtev –
Первое решение не использует «setTimeout», но, как я уже сказал, это приводит к ужасному поведению.Я бы рекомендовал использовать решение с 'setTimeout'. Если вы не хотите «setTimeout» только для вставки текста, вы можете использовать две функции: одну с установкой setTimeout для «keyup», «keydown» или «input», а другую без setTimeout для обработки события «paste». –