0

我正在尝试制作一个 javascript 函数,该函数将检查用户在文本字段中输入的值是否不能小于 9 位,并且不能全为 0。

这是我做的

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 的情况。它仅检查 1 个具有精确 9 个零的条件 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

我想到了两个选择。您可以尝试将值解析为数字并测试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 回答