addEventListener для input text
Доброго времени суток!
Проблема: например для кнопки button знаю как добавить addEventListener, а для поля input - нет. Нужно создать массив, допустим var names = ["Петя", "Коля"]. Массив есть. Далее есть строка ввода <input type="text" id="input">. input.value... с ним не могу разобраться или он здесь не нужен? Нужно чтобы после ввода в input значения "Петя" срабатывала некая функция, а само поле очищалось от ввода. Помогите, пожалуйста. Спасибо. |
<!DOCTYPE HTML>
<html>
<head><meta charset="windows-1251" /> </head>
<body>
<input type="text" id="input">
<script>
input=document.querySelector("#input")
arr=[/petya/i, /vasya/i]
input.oninput=function(){if(arr[0].test(this.value)||arr[1].test(this.value)) this.value=""}
</script>
</body>
</html>
Если верхний регистр не нужен убери флаги, или можешь использовать простое сравнение строк
<!DOCTYPE HTML>
<html>
<head><meta charset="windows-1251" /> </head>
<body>
<input type="text" id="input">
<input type="text" id="input2">
<script>
input=document.querySelector("#input")
arr=["Вася", "Петя", "петя", "вася"] // при вводе регистр имеет значение!!!
input.oninput=function(){if(arr[0]===this.value||arr[1]===this.value||arr[2]===this.value||arr[3]===this.value) this.value=""}// вариант 1
input2=document.querySelector("#input2")
isValue=function(word){
for(var i in arr) if(arr[i]===word) return true
}
input2.oninput=function(){if(isValue(this.value)) this.value=""}//вариант 2
</script>
</body>
</html>
|
принципе, с addEventListener это тоже вроде работает (тестил V8 и FF)
<!DOCTYPE HTML>
<html>
<head><meta charset="windows-1251" /> </head>
<body>
<input type="text" id="input">
<script>
input=document.querySelector("#input")
arr=["Вася", "Петя", "петя", "вася"]
isValue=function(word){
for(var i in arr) if(arr[i]===word) return true
}
input.addEventListener("input", function(){if(isValue(this.value)) this.value=""})
</script>
</body>
</html>
|
Krutoy, выручайте, пожалуйста!
input=document.querySelector("#input")
arr=[/petya/i, /vasya/i]
input.oninput=function(){if(arr[0].test(this.value)||arr[1].test(this.value)) this.value=""this.value=""
functionAdd();
}
functionAdd(){
alert("Проблема");
}
Подскажите, пожалуйста, если нужно ввести 100 имен, их либо по очереди вводить в arr либо есть другой способ? Код, что Вы прислали - подошел мне, кроме одного: в конце добавил функцию, допустим functionAdd. И эта функция срабатывает на ввод любой клавишы, не зависимо, есть ли эта буква в arr или нет. Теперь при нажатии любой клавиши выскакивает алерт, а необходимо, чтобы алерт выскакивал после ввода одного из значений массива. После чего поле должно очиститься и можно вводить другое значение из того же массива. Спасибо. |
Цитата:
<!DOCTYPE HTML>
<html>
<head><meta charset="windows-1251" /> </head>
<body>
<input type="text" id="input">
<script>
input=document.querySelector("#input")
arr="вася петя".split(" ")
isValue=function(word){
for(var i in arr) {
var re=new RegExp(arr[i], "i")
if(re.test(word)) return true
}
}
Add=function Add(){
alert("Проблема");
}
test=function(){
if(isValue(this.value)) {this.value=""; Add()}
}
input.oninput=test
</script>
</body>
</html>
|
Цитата:
Для рендера тегов нужна готовая либа, ибо все уже давно написано. |
| Часовой пояс GMT +3, время: 19:12. |