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 2

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)" />