简体   繁体   English

Javascript - onblur函数无法更改文本框的值

[英]Javascript - onblur function cannot change the value of the textbox

I have some textboxes allowing users to enter numbers from 0 to 20. So that I have a js validation code to test if they follow the rule or not. 我有一些文本框允许用户输入0到20之间的数字。所以我有一个js验证代码来测试他们是否遵循规则。

I have such the following textboxes: 我有以下文本框:

<input type="textbox" name="tx1" onblur="checkValue(this.value)" />
<input type="textbox" name="tx2" onblur="checkValue(this.value)" />
....

Then I write a js function like this: 然后我写一个像这样的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;
  }
}

I tried to test via console.log(). 我试图通过console.log()进行测试。 I tried alert('hi') and it works. 我试过警报('hi')并且它有效。 However, it does not change value at all when meeting the above conditions. 但是,在满足上述条件时,它根本不会改变价值。 So could anyone help me to solve this? 那么有人可以帮我解决这个问题吗?

Try this 尝试这个

<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;
  }
}

Re-Write your code as below. 重写您的代码如下。 Only passing this can do the job then. 只有通过this才能完成这项工作。

HTML HTML

<input type="textbox" name="tx1" onblur="checkValue(this)" />
<input type="textbox" name="tx2" onblur="checkValue(this)" />
....

Javascript 使用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;
  } 
}

Your script is return the value but no place you to set those values. 您的脚本将返回值,但您无法设置这些值。 So when the blur function invokes script surely invoked.. but the value is not set any where. 所以当blur函数调用脚本时肯定会调用..但是值没有设置在任何地方。

"isNan()" is not a function but "isNaN()" is, send input elemment, not only element's value, for update the input value. “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)" />

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM