Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Почему jQuery не обрабатывает элементы со значением атрибутов "nodeType" (https://javascript.ru/forum/jquery/44130-pochemu-jquery-ne-obrabatyvaet-ehlementy-so-znacheniem-atributov-nodetype.html)

ercling 08.01.2014 11:59

Почему jQuery не обрабатывает элементы со значением атрибутов "nodeType"
 
Здравствуйте!

Имеем форму
<form role="form" class="form-horizontal" id="addNEfrm" method="post" name="form">
    <div class="radio-inline">
        <input type="radio" name="nodeType" value="SGSN" id="btlSGSNradio">
        <label for="btlSGSNradio" class="btlnRLMPlabel">SGSN</label>
    </div>    

        <div class="modal-footer">
            <button type="button" class="btn btn-primary" id="addNodeButton">Add node</button>
        </div>
</form>


И JS
$(document).ready(function() {

  $('#addNodeButton').click(function(){
    $('#addNEfrm').submit();
  });

  $('#addNEfrm').submit(function(e){
      e.preventDefault();
    alert("asd");
      
  });

});


Ссылка на jsfiddle

Собственно, почему значения атрибутов name="nodeType" или id="nodeType" приводят к неработоспособности?

На jQuery версий младше 1.9.1 все работает.

Хочу разобраться какие имена нельзя присваивать атрибутам чтобы не иметь проблем в будущем.

danik.js 08.01.2014 22:10

Цитата:

Сообщение от ercling
Хочу разобраться какие имена нельзя присваивать атрибутам чтобы не иметь проблем в будущем.

Интересный случай. Имена (ID или NAME) контролов формы маппятся на свойства формы. Причем при возникновении конфликтов начальные свойства затираются. Мне кажется это неправильным, тем не менее спецификация такой случай даже не принимает во внимание.

Само собой элементы с именами nodeType, tagName могут сломать код.
А ведь есть и более приближенные к реальным случаи именования:
action, name, id, method, role - все это затрет собственные свойства формы, так что из js с ней будет невозможно работать (разве что только через getAttribute)

Маппинг элементов, имеющих id также идет и на объект window, но там хотя бы свойства не затираются, слава богу.


Часовой пояс GMT +3, время: 13:39.