реализация jquery val () - PullRequest
       4

реализация jquery val ()

0 голосов
/ 28 декабря 2011

У меня есть динамически загруженная форма, которая должна быть предварительно заполнена некоторыми данными. Под предварительным заполнением я подразумеваю, что select option или input type="radiobutton" должны быть предварительно выбраны.

Конечно, я использую jQuery ...

Я запутался, потому что ожидал, что функция .val() добавит атрибут selected="selected" к элементу option, но это не так.

Как это работает тогда? Это что-то меняет в DOM, но я не смог найти это изменение в Firebug ...

Обычно я не заботился бы о деталях, но я играл с тестами Selenium и хотел сделать тест, который проверяет, выбран ли select option, как ожидалось, и поскольку он не устанавливает selected="selected", я был интересно как это проверить?

Ответы [ 3 ]

0 голосов
/ 28 декабря 2011

Вы можете использовать новую функциональность jquery .prop ( docs ) для установки или проверки свойств элемента.

0 голосов
/ 28 декабря 2011

Как это работает тогда?

Вот исходный код:

jQuery(elem).find("option").each(function() {
    this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
});

https://github.com/jquery/jquery/blob/255460e4836e86b86f48dd5b7d2a2cbf3f996de2/src/attributes.js#L273

Выше this - это узел option dom, поэтому вы были близки. Он устанавливает свойство selected вместо атрибута selected.

0 голосов
/ 28 декабря 2011

используйте attr:

.attr («выбранный», «выбранный»)

или

<script>

    $("select").change(function () {
          var str = "";
          $("select option:selected").each(function () {
                str += $(this).text() + " ";
              });
          $("div").text(str);
        })
        .trigger('change');
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...