2013-07-18 2 views
2

У меня есть входной тип текстапользовательский атрибут не работает в IE10

<input type="text" name="firstNameInd" style="width:200px;" required="true" maxlength="100" /> 

«обязательное» пользовательский атрибут, который я доступ с помощью JavaScript.

Это нормально работает в IE 7 и 8, но не в IE10, он показывает required = "".

Возможно, это связано с тем, что требуется атрибут в HTML5.

Может ли кто-нибудь предложить, что делать?

ответ

4

Предполагая, что тип HTML5, атрибут required зарезервирован. Вы должны использовать префикс data- для пользовательских атрибутов:

<input type="text" name="firstNameInd" style="width:200px;" data-required="true" maxlength="100" /> 

Что вы можете получить доступ к следующим образом:

var required = foo.getAttribute('data-required') // where foo is reference to your input 
3

Если я неправильно понял вас, и вы действительно хотите использовать пользовательский атрибут, вы не можете использовать имя required.

Он зарезервирован в стандарте HTML 5. Вы должны использовать data-required и доступ к нему через dataset:

element.dataset.required 
// or 
element.getAttribute("data-required"); 


Вы должны указать либо required или ничего в качестве значения атрибута!

<input type="text" ... required="required" /> 
<input type="text" ... required /> 

required attribute The составляет за Spec A boolean attribute.

Эти правила применяются к логическому атрибуту:

Если атрибут присутствует, то его значение должно быть либо пустая строка или значение, которое является ASCII регистронезависимым матч для каноническое имя атрибута , без начального или конечного пробела.

http://www.w3.org/TR/html5/infrastructure.html#boolean-attribute

1

В html5 пользовательских атрибутов начинается с data- * Вы можете использовать

<input type="text" name="firstNameInd" style="width:200px;" data-required="true" maxlength="100" /> 

затем получить доступ к нему, как

getAttribute("data-required") 

дальнейших показаний

http://html5doctor.com/html5-custom-data-attributes/

благодаря

1

required является НЕ пользовательский атрибут; это часть стандарта HTML5. И true не является допустимым значением для него. Вероятно, поэтому он не работает.

Если вам нужны пользовательские атрибуты, правильный способ соблюдения стандартов - это использовать префикс data-. Это гарантирует, что никогда не будет столкновения с будущими дополнениями к стандартному набору атрибутов HTML.

В этом случае, если вы хотите использовать атрибут HTML5 required, он работает как логическое атрибут, похожий на disabled и readonly, что вам нужно только указать имя атрибута, без значения, для того, чтобы применить , Стандарты HTML5 код будет выглядеть следующим образом:

<input type="text" name="foo" required maxlength="100"> 

Это добавить required свойства элемента в DOM. Затем вы можете включить или отключить это свойство с помощью Javascript, установив его на true или false (т.е. логические значения, а не строки). И вы можете получить доступ в JS, просто проверив, установлен ли он.

Обратите внимание, что ваш JS-код должен будет учитывать тот факт, что в последних браузерах, совместимых с HTML5, браузер уже проведет проверку, если у вас есть набор свойств required; вам может потребоваться отбросить часть вашего существующего кода при работе в современных браузерах или, по крайней мере, адаптировать его для обработки всех случаев.

Если вы действительно хотите иметь нестандартное свойство, вы должны использовать data-required="whatever", но в этом случае это не обязательно, если вы не хотите существенно отличаться от required к стандарту HTML5.