2013-07-11 3 views
0

Есть ли способ заполнить массив JavaScript с полями формы, которые имеют атрибут required?Заполнение массива JavaScript с полями обязательной формы

Я попробовал этот кусок кода ...

var requiredfields = new Array(); 

function getInputs() { 
    var fields = document.getElementsByTagName('input'); 
    for (var i = 0; i < fields.length; i++) { 
     alert('I am input field ' + i); 
     //var required = fields[i].getAttribute('required'); 
     if (fields[i].getAttribute('required')) { 
      fields[i].style.border = '1px solid #ff0000'; 
      requiredfields.push(fields[i]); 
     } 
    } 
} 

К сожалению, это даже не положить границу или показывать оповещения. Я даже не уверен, правильно ли вернет данные getElementsByTagName.

Возможно, что мой код неактивен. Hehehe ...

+1

The b заказ был только для целей тестирования. Я не могу использовать CSS для заполнения массива JavaScript (помните вопрос?). – doubleJ

+0

Для любви ... Я просто понял, что одна из причин, почему я не получал оповещения и прочее, заключалась в том, что моя функция вызывалась до визуализации элементов. Я положил вызов функции в конце страницы, и он работал лучше. Позиционирование всегда стоит помнить. – doubleJ

ответ

1

Вы можете использовать этот скрипт:

http://jsfiddle.net/2u3kZ/

var requiredfields = new Array(); 

var fields = document.getElementsByTagName('input'); 
for (var i = 0; i < fields.length; i++) { 
    if (fields[i].getAttribute("required") != null) { 
     fields[i].style.border = '1px solid #ff0000'; 
     requiredfields.push(fields[i]); 
    } 
} 
+0

Спасибо за '' = null' часть. Я не был уверен, как обращаться к 'required', поскольку это не было' required = "required" '(Boolean attribute). – doubleJ

+0

Одна вещь, которую это не учитывает, - это если поле отмечено как «обязательное», а также «отключено». Форма будет игнорировать 'required', но этот JavaScript по-прежнему отмечает это как таковой. Можно было бы включить более логичную логику, но я сделал удаление 'required' для любых полей, которые могут быть отключены, и просто добавьте' required' с JavaScript, когда они будут включены. – doubleJ

1

В современных браузерах вы можете сделать это:

var required = document.querySelectorAll('input[required]'); 

Array.prototype.forEach.call(required, function(element){ 
    element.style.border = '1px solid #ff0000'; 
}); 

Или просто использовать правило CSS в таблице стилей:

input[required] { 
    border: 1px solid #ff0000; 
} 
+0

Будет ли версия Safari для iOS включена в «современные браузеры»? Причина, по которой мне приходится делать это, заключается в том, что она игнорирует 'required' и' type = "email" (или, более конкретно, формат указанного поля). Кроме того, помните, что вопрос заключается в заполнении массива (не добавляя границы CSS). – doubleJ

+0

Какая версия iOS? 'required' содержит все ваши обязательные поля в псевдо-массиве, которые вы можете использовать. Если вы хотите, чтобы реальный массив просто выполнял '[] .slice.call (обязательно)'. – elclanrs

+0

Я раньше не работал с 'Array.prototype'. Я немного поработаю над этим. – doubleJ

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