Это исходный код
$('.holder').on('keypress', 'alphabet', function (e) {
if (window.event) code = e.keyCode;
else code = e.which;
var myRegExp = new RegeExp(/[A-Z]/i);
if (myRegExp.test(String.fromCharCode(code))) {
return true;
} else return false;
});
Однако я хочу, чтобы этот код можно было повторно использовать как имя класса в качестве параметра, например, этот, но он не работает:
$('.holder').on('keypress', classname, function (e) {
if (window.event) code = e.keyCode;
else code = e.which;
var pattern;
if (classname == "alphabet") pattern = /[A-Z]/i;
else if (classname == "number") pattern = /[0-9]/;
var myRegExp = new RegeExp(pattern);
if (myRegExp.test(String.fromCharCode(code))) {
return true;
} else return false;
});
См. эту FIDDLE
2 ответа
Это должен быть ваш HTML. У вас должен быть атрибут name
для элемента input
<div class="holder">
alphabets only : <input type="text" name="name" class="alphabet" /><br />
numbers only : <input type="text" name="age" class="number" />
</div>
А это JavaScript. Вам нужно событие на input
, а не на holder
, и вам не нужно передавать classname
в качестве параметра; лучше проверьте это с помощью .attr('class')
$('input').on('keypress', function (e) {
if (window.event) code = e.keyCode;
else code = e.which;
var pattern;
if ($(this).attr('class') == "alphabet") pattern = /[A-Z]/i;
else if ($(this).attr('class') == "number") pattern = /[0-9]/;
var myRegExp = new RegExp(pattern);
if (myRegExp.test(String.fromCharCode(code))) {
return true;
} else return false;
});
on(...)
не определяет функцию. Он вызывает функцию. У вас не может быть неопределенной переменной. Оберните все это в функцию.
Кроме того, второй параметр для on(...)
должен быть селектором, но "alphabet"
попытается выбрать тег <alphabet>
, которого не существует. Селектор класса - ".alphabet"
.
Вы также неправильно написали RegExp.
function applyKeypressValidation(selector, classname) {
$('.holder').on('keypress', selector, function (e) {
if (window.event) code = e.keyCode;
else code = e.which;
var pattern;
if (classname == "alphabet") pattern = /[A-Z]/i;
else if (classname == "number") pattern = /[0-9]/;
var myRegExp = new RegExp(pattern);
if (myRegExp.test(String.fromCharCode(code))) {
return true;
} else return false;
});
}
applyKeypressValidation('.alphabet', 'alphabet');
applyKeypressValidation('.number', 'number');
Похожие вопросы
Новые вопросы
regex
Регулярные выражения предоставляют декларативный язык для сопоставления шаблонов в строках. Они обычно используются для проверки строк, разбора и преобразования. Укажите язык (PHP, Python и т. д.) или инструмент (grep, VS Code, Google Analytics и т. д.), который вы используете. Не размещайте вопросы, требующие объяснения того, что означает символ или чему будет соответствовать конкретное регулярное выражение.
$('.holder').on('keypress', function (e,var classname)
@Amadanon(...)
, определяетсяon(...)
, вы не можете просто изменить ее случайным образом.