Вы используете в обработчике, который является неопределенным переменной Name
. Вам необходимо протестировать, используя this
, который является элементом ввода в контексте обработчика. Кроме того, если вы не определили его в другом месте, setFocus() не является функцией. Используйте this.focus()
, чтобы сбросить фокус (хотя я предполагаю, что вы просто делаете это по причинам тестирования).
Вам не нужно использовать /.../
, чтобы указать регулярное выражение для функции поиска Javscript. JS search
автоматически преобразует строку в регулярное выражение. Тем не менее, точка Barmar с использованием match
вместо search
является хорошей для вашего случая, так как вам не нужен индекс, в котором встречается совпадение в строке, только независимо от того, есть ли строка в любом месте.
Заметка о вашем предыдущем пространстве в вашем тесте тоже хорошая, так как ваши вопросы задают вопрос «geb» и «geb.». Предполагая, что вы правильно сформулировали свой вопрос, у вас не должно быть ведущего места в тестовом режиме.
Чтобы показать, почему ваш код не работает, здесь работает модификация, сохраняя, как большая часть его так же, как это возможно, так что вы можете понять свои ошибки
<input type="text" name="Name" size="25" title="Hier nur Vor- und Nachnamen in dieser Reihenfolge eingeben (bitte ohne Zusatz des Geburtsnamens!)." value="Eva Gebhard geb. Zander"
onchange="if (this.value.toUpperCase().search(' GEB[. ]') > -1) {alert('Die Angabe des Geburtsnamens ist nicht erforderlich. Bitte weglassen!'); this.focus(); return false};" />
Вот еще один пример, показывающий некоторые из комментарии других пользователей включены:
function myFunction(el) {
value = el.value;
if (value.match(/geb[. ]/i)) {
alert('Die Angabe des Geburtsnamens ist nicht erforderlich. Bitte weglassen!');
el.focus();
return false;
}
}
<input type="text" name="Name" size="25" title="Hier nur Vor- und Nachnamen in dieser Reihenfolge eingeben (bitte ohne Zusatz des Geburtsnamens!)." value="Eva Gebhard geb. Zander" onchange="myFunction(this)"/>
Это просто '' ГЭБ анализа захвата буфера 1 для точки или пространства ([.]). – sln
Просто fyi, ваше регулярное выражение имеет пространство перед GEB, так что это то, что он ищет. И JS не нужно, чтобы регулярное выражение находилось в разделителях '/.../'? – sln
Не используйте 'search' со строками, передайте регулярное выражение! – Bergi