2012-04-25 2 views
0

Я пытаюсь проверить, пусто ли текстовое поле имени. если это так, то я хочу показать div, который говорит «пожалуйста, введите свое имя». я делаю тест, а name = 'name'. но после этого ничего больше не появляется.javascript if else statement error

function validate(input, name) { 
if(name=='name') { 
     if(input==null || input=="") { 
      name.style.visibility='visible'; 
      alert("please enter a value"); 
     } else { 
      alert("valid entry."); 
     } 
    } 
} 

Когда я распечатываю вход с полем предупреждения, он не содержит ничего; поэтому я знаю, что это либо null, либо «». как я могу исправить это, чтобы он работал?

вот мой текстовое поле:

<input type="text" name="name" id="name" onblur="javascript: validate(this.value, this.id);" required /> 
    <div id="name" style="visibility:hidden; float:right;">Please fill in a name!</div> 
+4

имя == 'имя' не имеет смысла, когда оно упоминается позже как объект. – h0tw1r3

+3

Показать свой HTML, показать, где назначается переменная 'name'. А затем [показать нам демонстрационную демонстрацию] (http://jsfiddle.net/); мы ищем [SSCCE (Short, Self-Contained, Correct/Compilable Example)] (http://sscce.org/). –

+0

@DavidThomas - Хорошая ссылка! –

ответ

1

Протокол javascript: используется только если у вас есть Javascript в URL, не используйте его в обработчиков событий.

У вас не может быть двух элементов с одинаковым идентификатором. Идентификатор должен быть уникальным.

В XHTML нет атрибутов без значения. Вы должны использовать required="required", а не только required.

Вам не нужно проверять значение для null. Значение текстового поля никогда не является нулевым.

Используйте метод getElementById, чтобы найти элемент из его идентификатора.

function validate(input, name) { 
    if (name == 'name') { 
    if (input == '') { 
     document.getElementById('nameInfo').style.visibility = 'visible'; 
     alert("please enter a value"); 
    } else { 
     alert("valid entry."); 
    } 
    } 
} 

<input type="text" name="name" id="name" onblur="validate(this.value, this.id);" required="required" /> 
<div id="nameInfo" style="visibility:hidden; float:right;">Please fill in a name!</div> 
+0

+1, но что заставляет вас думать, что OP использует XHTML? Нет DOCTYPE, а реальный XHTML крайне редко встречается в Интернете. XML-подобная разметка не является надежным индикатором. Лучше сказать OP, чтобы удалить искусственные SHORTAG. – RobG

+0

@RobG: он основан на самозакрываемом теге ввода. Надеюсь, ОП знает, использует ли он XHTML или нет, так что он знает, является ли эта точка релевантной. – Guffa

+0

Я использовал только что, потому что я видел его в html 5 – droidus