[英]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.