Отличия браузера Jquery .val () - PullRequest
       19

Отличия браузера Jquery .val ()

3 голосов
/ 08 сентября 2010

Заявление
С jquery, если у вас есть элемент кнопки, определенный следующим образом: <button value="123">456</button>

Браузеры выдадут вам разные значения, если вы используете .attr('value'); или .val();

<ч /> Причина?
Элемент <button> это просто <input type="button"> в сокращении.

Способ установки значения <input type="button"> заключается в установке value="Click Me"

Следовательно, <input type="button" value="Click Me"> совпадает с <button>Click Me</button>.

<ч /> Вопрос
Почему использование .val() возвращает разные значения в разных браузерах. Кто прав?
Firefox:
.val () = 123 | отображаемый текст = 456
Chrome:
.val () = 123 | отображаемый текст = 456
> = Internet Explorer 8:
.val () = 123 | отображаемый текст = 456
<= Internet Explorer 7: <br /> .val () = 456 | отображаемый текст = 456

Ответы [ 2 ]

4 голосов
/ 08 сентября 2010

Чтение по спецификации w3 Я уверен, что Chrome и Firefox верны. Именно из-за этого этот фрагмент:

кнопки, созданные с помощью кнопки функция элемента, как кнопки созданный с помощью элемента INPUT, но они предлагают более богатый рендеринг Возможности: элемент BUTTON может есть содержание.

Спецификация W3 относится к информации, найденной между тегами <button></button>, как content , а не value , что и приводит меня к наблюдению. Еще один намек на то, что Internet Explorer - единственный, который возвращает другое значение, и я вполне уверен, что Internet Explorer - корень всех страданий во вселенной.


Я также решил протестировать Safari 5, Opera, Chrome и Firefox 3.6.8 на Mac. Все возвращают 456 как отображаемый текст и 123 как .val()

0 голосов
/ 08 сентября 2010

Я нахожусь на IE 8.0.6001. * И он ведет себя точно так же, как Firefox - http://www.jsfiddle.net/AKGsd/3/

Вы, вероятно, обнаружили еще еще одну ошибку / особенность старых версий Internet Explorer ... Вздох!

...