Как изменить HTML атрибута значения для поля ввода?


person techguytom    schedule 19.09.2009    source источник
comment
У Phoenix есть ответ, и вам следует проверить селекторы, доступные для форм: docs.jquery.com/Selectors   -  person Mottie    schedule 19.09.2009
comment
Dupe: stackoverflow.com/questions/1388893/   -  person gnarf    schedule 19.09.2009


Ответы (5)


Конечная цель — получить форму с помощью .html(), поэтому у меня есть весь код вместе со значениями, введенными в поля ввода.

С этой стратегией вы проиграете. Значения формы — это отдельный слой данных, который хранится отдельно от атрибутов HTML. Атрибут HTML value отражается в свойстве defaultValue объекта, не в свойстве value.

Установка значения или проверки/выборки элемента управления формы не изменяет атрибуты HTML DOM; следовательно, сериализация формы с использованием innerHTML или html() не даст вам значений формы — за исключением IE из-за ошибки.

(И в IE есть другие ошибки, связанные с сериализацией форм с измененными именами. Просто избегайте сериализации; запоминание самих значений из value или val() гораздо надежнее.)

person bobince    schedule 19.09.2009
comment
Я согласен с тем, что стратегия неверна. Я придумаю другой способ, так много для простого способа :) - person techguytom; 20.09.2009

Я считаю, что этот вопрос является дубликатом: SO138893: jQuery html() в firefox (использует .innerHTML) игнорирует изменения DOM. Ответ там должен решить вашу проблему. Я не думаю, что этот новый вопрос следует удалять, хотя - это может помочь кому-то еще найти путь к другому.

person Community    schedule 19.09.2009
comment
Спасибо, я даже не знал, что эта проблема вообще существует ... И за то, что действительно прочитали вопрос ОП ... :) - person J.C. Inacio; 19.09.2009
comment
Я не понимал, что это ограничивается проблемой браузера. Другой вопрос даже не возник, когда я искал, прежде чем спрашивать. - person techguytom; 20.09.2009

Чтобы изменить значение элемента ввода с идентификатором, вы можете использовать это.

$("#rate").val(newvalue);

Чтобы установить значение для боба, используйте

$("#rate").val("bob");
person rahul    schedule 19.09.2009
comment
Хотя теперь я понимаю, что вы можете использовать браузер, отличный от Firefox (который отображает эту ошибку). Это вообще не решает проблему: jsbin.com/uniko - person gnarf; 19.09.2009

Я проверил ваш код, и он работает нормально. Единственное, чего не хватает, так это типа входного поля. Вы можете попробовать следующие вещи

$('#example')[0].innerHTML

И Второй - это

$("#rate")[0].outerHTML

Надеюсь, это поможет.

person Asim Sajjad    schedule 19.09.2009

Как насчет сохранения не самого HTML, а атрибутов?

var attr = {
'value' : $('#rate').val(),
'type' : $('#rate').attr('type') }
//later on in the code or something:
var inp = $('<input />').attr('id', 'rate').attr(attr);
person Pim Jager    schedule 19.09.2009