2015-06-25 2 views
0

Как я могу указать тип элемента при использовании querySelecterAll()? Например, я хочу выбрать все поля ввода, где type = text в форме. Не для стилизации, а для функциональности.Javascript (vanilla) - Как указать тип элемента при использовании querySelectorAll?

Это то, что я прямо сейчас:

var inputGroup = document.getElementById('contactForm'); 

var inputs = inputGroup.querySelectorAll("input"); 

for (var i = 0; i < inputs.length; i++) { 
    inputs[i].addEventListener("blur", checkInput); 
} 

function checkInput() { 
    this.value === "" ? this.className = "error" : this.className = "valid"; 
} 

Сейчас я также присматривается входы, где тип установлен представить, радио и т.д. Но я просто хочу, чтобы предназначаться входные элементы, где тип установлен в текст.

ответ

3

Вы можете использовать attribute selector syntax непосредственно в вызове querySelectorAll:

var inputs = inputGroup.querySelectorAll('input[type="text"]'); 

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

var inputs = inputGroup.querySelectorAll('input[type="text"],input:not([type])'); 
+1

Это верно, но она не может работать, если 'type' атрибут отсутствует (в этом случае' ' будет по умолчанию введите «текст»). – Pointy

+0

Ну [да, похоже, что работает] (https://jsfiddle.net/8aLu8aww/). (В Firefox все равно.) – Pointy

+0

@Pointy Just [проверял его сам] (http://jsfiddle.net/q4t6bc99/) в Chrome тоже, спасибо за подтверждение –

Смежные вопросы