簡體   English   中英

Javascript - onblur函數無法更改文本框的值

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

我有一些文本框允許用戶輸入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()進行測試。 我試過警報('hi')並且它有效。 但是,在滿足上述條件時,它根本不會改變價值。 那么有人可以幫我解決這個問題嗎?

嘗試這個

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM