Итак, у меня есть элемент ввода HTML

<input name="name" type="text" id="name" placeholder="Name" />

И в JavaScript я делаю:

var ninp = document.getElementById("name");
if(ninp.value == ""){
  do stuff
} else{
  do other stuff
}

Каждый раз, когда я запускаю функцию, она запускает блок кода «else». Я делаю что-то не так или это неверный путь: /

2
KrisGeor 27 Авг 2017 в 16:28

4 ответа

Лучший ответ

В первой строке вашего кода вы получили значение входного тега. так что у вас есть что-то вроде этого:

ninp = "a string ..."

И поэтому невозможно иметь что-то вроде ninp.value в вашем состоянии во второй строке.

Менять

if(ninp.value == ""){
do stuff
}

Кому

if(ninp == ""){
 do stuff
}
1
Mahdi P. 27 Авг 2017 в 13:45

Может быть, что-то еще в функции нарушало его, но ответом было просто проверить длину строки

var ninpv = ninp.value;
if(ninpv.lenght == 0;){
do stuff
}
0
KrisGeor 27 Авг 2017 в 13:54

Вы также можете проверить таким образом

var ninp = document.getElementById("name").value;
if(ninp.length === 0){
  do stuff
} else {
  do other stuff
}
0
Suresh Sapkota 27 Авг 2017 в 14:13

Почему вы не переходите на JQuery и писать

var ninp = $('#name');
if(ninp.val() =="")
{
//do stuff
}else
//otherstuff

or 
if(ninp.val().length==0)

Также имейте это в виду, если вы используете браузер внешних файлов формы JS, в основном не загружайте обновленные файлы js. В этом случае я в основном использую режим инкогнито браузера

0
Ans Bilal 27 Авг 2017 в 14:23