Текстовое поле HTML, значения которого не могут быть 0, используя Javascript - PullRequest
0 голосов
/ 21 июля 2011

Я пытался создать функцию 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

Ответы [ 5 ]

2 голосов
/ 21 июля 2011

Итак, если я правильно понимаю, вы хотите, чтобы пользователь мог вводить число с более чем 9 цифрами, но они не могут быть всеми нулями, верно?

Это можно сделать с помощью регулярного выражения:

var value; // Obtain it somehow

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

Это проверяет, является ли значение по крайней мере 9 цифрами (оно не допускает ничего, кроме цифр), и что они не все 0.

1 голос
/ 21 июля 2011

Это должно проверить оба условия:

function CheckField(field){
  return !/0{9}/.test(field.value) && /\d{9}/.test(field.value);
}
0 голосов
/ 21 июля 2011

Два варианта приходят на ум. Вы можете попробовать разобрать значение как число и проверить на 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
}

Первый вариант, вероятно, быстрее.

0 голосов
/ 21 июля 2011

попробуйте это:

if (field.value.length <9 || field.value.replace("0","") == "")
0 голосов
/ 21 июля 2011

Попробуйте что-то вроде этого:

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

или если вы хотите проверить, было ли это также число:

if (!(parseInt(valueEntered) > 0))
...