3

我有一些文本框允许用户输入从 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;
  }
}

我试图通过 console.log() 进行测试。我尝试了 alert('hi') 并且它有效。但是,当满足上述条件时,它根本不会改变值。那么有人可以帮我解决这个问题吗?

4

4 回答 4

12

试试这个

<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;
  }
}
于 2012-09-10T06:36:53.567 回答
3

重新编写您的代码,如下所示。只有传球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;
  } 
}
于 2012-09-10T06:42:19.190 回答
2

您的脚本返回值,但没有设置这些值的地方。因此,当模糊函数调用脚本时,肯定会调用脚本。但该值未在任何位置设置。

于 2012-09-10T06:36:40.277 回答
1

“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)" />
于 2012-09-10T07:04:56.530 回答