Javascript - функция onblur не может изменить значение текстового поля
У меня есть несколько текстовых полей, позволяющих пользователям вводить числа от 0 до 20. Так что у меня есть код проверки js, чтобы проверить, следуют ли они правилу или нет.
У меня есть такие следующие текстовые поля:
<input type="textbox" name="tx1" onblur="checkValue(this.value)" />
<input type="textbox" name="tx2" onblur="checkValue(this.value)" />
....
Затем я пишу функцию js следующим образом:
function checkValue(value) {
if (value > 20) {
return this.value = 20;
} else if (value < 0){
return this.value = 0;
} else if (value == '' || isNan(value)) {
return this.value = 0;
} else {
return this.value;
}
}
Я попытался протестировать через консоль.бревно(). Я попробовал alert ("привет"), и он работает. Однако при выполнении вышеуказанных условий она не меняет значения вообще. Так может ли кто-нибудь помочь мне решить эту проблему?
4 ответа:
Попробуйте это
<input type="textbox" name="tx1" onblur="checkValue(this)" />
function checkValue(sender) { var value = parseInt(sender.value); if (value > 20) { sender.value = 20; } else if (value < 0){ sender.value = 0; } else if (value == '' || isNan(value)) { sender.value = 0; } else { return sender.value; } }
Перепишите код, как показано ниже. Тогда только передача
this
может выполнить эту работу.HTML
<input type="textbox" name="tx1" onblur="checkValue(this)" /> <input type="textbox" name="tx2" onblur="checkValue(this)" /> ....
Javascript
function checkValue(obj) { if (obj.value > 20) { obj.value = 20; } else if (obj.value < 0){ obj.value = 0; } else if (value == '' || isNan(obj.value)) { obj.value = 0; } }
Ваш скрипт возвращает значение, но нет места, где вы можете установить эти значения. Поэтому, когда функция blur вызывает скрипт, он обязательно вызывается.. но значение не устанавливается ни где.
"isNan ()" - это не функция, а" isNaN () " - это отправка входного элемента, а не только значения элемента, для обновления входного значения.
<script> function checkValue(input) { console.log(input.value); if (input.value > 20) { return input.value = 20; } else if (input.value < 0){ return input.value = 0; } else if (input.value == '' || isNaN(input.value)) { return input.value = 0; } else { return input.value; } } </script> <input type="textbox" name="tx1" onblur="checkValue(this)" /> <input type="textbox" name="tx2" onblur="checkValue(this)" />