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

スクリプトは値を返しますが、それらの値を設定する場所はありません。したがって、blur関数がスクリプトを呼び出すと、確実に呼び出されます。ただし、値はどこにも設定されません。

于 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 に答える