Проверьте, является ли элемент ввода HTML пустым или не имеет значения, введенного пользователем - PullRequest
12 голосов
/ 10 января 2012

Относится к этому вопросу здесь.Могу ли я проверить, имеет ли элемент в DOM значение или нет?Я пытаюсь поместить это в утверждение «если» и не уверен, что мой подход правильный.Здесь идет:

if (document.getElementById('customx')){
    //do something
}

Или это должно быть:

if (document.getElementById('customx') == ""){
    //do something
}

РЕДАКТИРОВАТЬ: Под значением, которое я имею в виду, customx является полем ввода текста.Как я могу проверить, нет ли в этом поле текста.

Ответы [ 5 ]

20 голосов
/ 10 января 2012

Метод getElementById возвращает объект Element, который вы можете использовать для взаимодействия с элементом.Если элемент не найден, возвращается null.В случае элемента ввода свойство value объекта содержит строку в атрибуте значения.

При использовании факта, что оператор && замыкается, и оба null ипустая строка считается «ложной» в логическом контексте, мы можем объединить проверки на наличие элемента и наличие данных значения следующим образом:

var myInput = document.getElementById("customx");
if (myInput && myInput.value) {
  alert("My input has a value!");
}
3 голосов
/ 10 января 2012

getElementById вернет false, если элемент не был найден в DOM.

var el = document.getElementById("customx");
if (el !== null && el.value === "")
{
  //The element was found and the value is empty.
}
2 голосов
/ 06 октября 2014
var input = document.getElementById("customx");

if (input && input.value) {
    alert(1);
}
else {
    alert (0);
}
0 голосов
/ 10 января 2012

Вы хотите:

if (document.getElementById('customx').value === ""){
    //do something
}

Свойство value даст вам строковое значение, и вам нужно сравнить его с пустой строкой.

0 голосов
/ 10 января 2012

Ваш первый был в основном прав.Это, к вашему сведению, плохо.Он выполняет проверку на равенство между узлом DOM и строкой:

if (document.getElementById('customx') == ""){

Узлы DOM на самом деле являются их собственным типом объекта JavaScript.Таким образом, это сравнение никогда не будет работать вообще, поскольку оно выполняет сравнение на равенство двух совершенно разных типов данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...