Невозможно запустить проверку - PullRequest
0 голосов
/ 11 мая 2018

Эй, я пытаюсь проверить свою форму, если есть пустой ввод с использованием javascript, я знаю о require ключевом слове с использованием HTML, но я действительно пытаюсь выяснить, что не так в написанном мною коде?

<html>
<body>
  <script> function x (info) {
  if(info.namex.value==" " || info.namex.value == "null")
  {
    alert ("Check again");
    return false;
  }
}
</script>
<form method = "post" name = "a" onsubmit = "return x(this)">
  <input type = "text" name = "namex">
  <input type = "submit" value = "submit">
  </form>
  </body>
  </html> 

Ответы [ 4 ]

0 голосов
/ 11 мая 2018

Когда у вас есть это:

if(info.namex.value==" ")
// -------------------^--

Вы не проверяете, является ли строка пустой. Вы проверяете, имеет ли он ровно один пробел. Это пустое пространство между двумя кавычками является символом, и ваша проверка требует ввода, чтобы иметь его. Вы проверяете, нажал ли пользователь клавишу пробела один раз. Чтобы проверить пустую строку, вы должны сделать это:

if(info.namex.value=="")

Однако вы также можете написать это так:

if(!info.namex.value)

Это введет кодовый блок if, когда info.namex.value ложно. Ложное значение 0, undefined, null пустая строка "" и более. Подробнее об этом здесь .


Также, как сказал Кшиштоф Янишевский, вы должны удалить цитаты из null. Если вы помещаете его в кавычки, вы не сравниваете значение null, вы сравниваете его со строкой с содержимым «null». И.Е. Вы проверяете, набрал ли пользователь «null» в поле ввода.

null: примитивное значение null
"null": строка с содержимым "n", "u", "l" и "l"

Подробнее о null здесь .


Вам, вероятно, понадобится следующее:

<html>

<body>
  <script>
    function x(info) {
      if (!info.namex.value.match(/\S/)) {
        alert("Check again");
        return false;
      }
    }
  </script>
  <form method="post" name="a" onsubmit="return x(this)">
    <input type="text" name="namex">
    <input type="submit" value="submit">
  </form>
</body>

</html>

В этой строке:

!info.namex.value.match(/\S/)

Это регулярное выражение /\S/, и оно будет соответствовать любому непробельному символу. Предупреждение будет отображаться, если на входе присутствует только символ без пробела , а не . Это означает, что любая комбинация пробелов не сделает это. Если у вас есть " " или " " - это просто пробел, а не какой-либо законный ввод. Вы, вероятно, не хотите этого. Если строка пуста "", непробельный символ все еще отсутствует, поэтому предупреждение по-прежнему отображается.

Единственный способ пройти проверку, если у вас есть «видимый» символ в любом месте ввода. Если у вас есть только пробелы, табуляции, переводы строк - это пробелы. Ваш чек требует как минимум одну букву, цифру, символ - что угодно , но эти пробельные символы.

Узнайте больше о регулярных выражениях здесь .

0 голосов
/ 11 мая 2018

Если вы хотите проверить, является ли ввод пустым, я предлагаю сделать следующее:

const x = (info) => {
  if (!info.namex.value.trim().length) {
    alert ("Check again");

    return false;
  }
}
0 голосов
/ 11 мая 2018

Прежде всего , если вы хотите проверить, равна ли переменная null, не окружайте null какими-либо кавычками.

Во-вторых , если вы проверяете, является ли переменная пустой строкой, не ставьте пробел внутри двойных кавычек ""

Кроме этого, ваш код в порядке.

Вот рабочий пример

function x(info) {
  if (info.namex.value == "" || info.namex.value == null) {
    alert("Check again");
    return false;
  }
}
<form method="post" name="a" onsubmit="return x(this)">
  <input type="text" name="namex">
  <input type="submit" value="submit">
</form>
0 голосов
/ 11 мая 2018

У вашего function нет полного набора проверок / условий, и, возможно, он идет не так, потому что вы проверяете поле empty из namex с двумя условиями, и одно из них - "" [пробел] .

Если вы в порядке с jquery, я предлагаю jqueryValidation , он прост в использовании и имеет полный набор проверок

...