0

ユーザーがテキストフィールドに入力した値が9桁以上で、すべて0になることができないかどうかをチェックするJavaScript関数を作成しようとしました。

これは私が作ったものです

function CheckField(field)
{
if (field.value.length <9 || field.value=="000000000")
{
alert("fail");
field.focus();
return false;
}
else 
{
return true;
}
}

<input type ="text" id="number1" onBlur='return CheckField(this)'>

ただし、これは、ユーザーが9つを超える値とすべて0を入力する条件をチェックしません。正確に9つのゼロを持つ1つの条件のみをチェックします000000000

4

5 に答える 5

2

それで、私がその権利を理解していれば、ユーザーが9桁を超える数字を入力できるようにしたいのですが、すべてゼロにすることはできませんよね?

これは正規表現で行うことができます:

var value; // Obtain it somehow

if (/^\d{9,}$/.test(value) && !/^0+$/.test(value)) {
    // ok
}

これがチェックするのは、値が少なくとも 9 桁 (数字以外は許可されない) であり、それらがすべて 0 ではないことです。

于 2011-07-21T11:04:18.003 に答える
1

これにより、両方の条件がチェックされます。

function CheckField(field){
  return !/0{9}/.test(field.value) && /\d{9}/.test(field.value);
}
于 2011-07-21T11:03:48.440 に答える
0

次のようなことを試してください:

var valueEntered = field.value;
if (parseInt(valueEntered) == 0) ...

または、それが数値かどうかも確認したい場合:

if (!(parseInt(valueEntered) > 0))
于 2011-07-21T11:03:26.300 に答える
0

これを試して:

if (field.value.length <9 || field.value.replace("0","") == "")
于 2011-07-21T11:04:33.933 に答える
0

2 つの選択肢が思い浮かびます。値を数値として解析して、isNaNまたはテストすることができます!= 0

  var parsed = parseInt(field.value, 10);
  if(field.value.length < 9 || !(isNaN(parsed) || parsed != 0)){
    alert("fail");
    ... rest of code
  }

または、regex

if(field.value.length < 9 || !/[^0]/.test(field.value){
    alert("fail");
    ... rest of code
}

最初のオプションは、おそらくより高速です。

于 2011-07-21T11:05:20.420 に答える