Очень похоже на ответ С.Т.Р.А.Х., но здесь это все равно:
function checkValue(el) {
// Trim only leading whitespace so responds when first space entered
// and break into words
var words = el.value.replace(/^\s+/,'').split(/\s+/);
// List of allowed words
var allowed = ['are','what'];
// Element to write message based on source element
var msg = document.getElementById(el.id + 'Msg');
// Clear error message by default
msg.innerHTML = '';
// Only do something if at least one word has been entered
// Could also check if first word has more letters than
// longest allowed word
if (words.length > 1) {
// Check if first word is allowed
if (allowed.indexOf(words[0].toLowerCase()) == -1) {
msg.innerHTML = 'Input must start with one of ' + allowed.join(', ');
}
}
}
Некоторая разметка:
<input id="foo" oninput="checkValue(this);">
<span id="fooMsg"></span>
Это позволяет пользователю по крайней мере, ввести слово, прежде чем получить сообщение об ошибке. Им также следует дать некоторые экранные подсказки, чтобы сообщить им, какие слова использовать, вместо того, чтобы сначала ошибаться (что обязательно должно произойти).
Если 'Are' и' What' являются единственными допустимыми словами, почему вам нужно запретить 'Why', что-то не так с вашей логикой здесь? – adeneo
@adeneo Я подозреваю, что «почему» был всего лишь общим примером слова «не-есть/что». Не то, что должно быть явно ограничено. – Sampson
@ user1144397 Могу я спросить * почему * вам нужно это поведение? – Sampson