Наткнулся на эту статью, когда искал собственное решение. Нужен ненавязчивый способ, чтобы люди не вводили что-либо цифрами в одно поле и ничего, кроме букв, цифр или пробелов, в другие поля. Я не мог использовать pattern="9999" для чисел, поскольку это не было обязательным полем, и на людей "кричали", если они переходили через это поле. Точно так же я не мог использовать pattern="xxx" для буквенно-цифровых полей, так как мне также нужно было разрешить пробелы.
Опираясь на эту статью и используя javascript, который предыдущие программисты разработали для этого клиента, я придумал эти красивые обработчики, подумал, что поделюсь, если кому-то еще понадобится это элегантное решение, и ТАКЖЕ, потому что иногда я забываю и смогу найти это очередной раз.
Либо в файле .js, который вы включаете, либо заключаете в теги:
function numChecker(e)
{
if (!e.value.match(/^[0-9]+$/))
{
e.value = e.value.substring(0.e.value.length -1 );
e.focus();
return false;
}
return true;
}
function charChecker(e)
{
if (!e.value.match(/^[a-zA-Z0-9\ ]+$/))
{
e.value = e.value.substring(0.e.value.length-1);
e.focus();
return false;
}
return true;
}
Тогда ваши поля ввода или cfinput будут иметь OnKeyUp="numChecker(this)"
или OnKeyUp="charChecker(this)"
в своих атрибутах.
Когда люди вводят недопустимый символ, этот скрипт срабатывает и просто удаляет этот недопустимый символ. Нет дополнительных кнопок, которые нужно нажимать, или предупреждений, которые нужно закрыть.
person
WiWildcat
schedule
21.02.2014