2009-09-19 1 views
1

Что я хочу сделать, это изменить «значение =» текстового поля ввода, используя jQuery. Конечной целью является захват формы с использованием .html(), поэтому у меня есть весь код вместе со значениями, введенными в поля ввода.Как изменить HTML-атрибут значения для поля ввода?

В качестве примера я это:

<span id="example"> 
<input type="text" value="" id="rate" /> 
</span> 

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

Если пользователь вводит «bob» во вход. Затем я использую:

var test = $('#example').html(); 

Переменная 'тест' имеет следующее:

<input type="text" value="" id="rate" /> 

Что я хочу:

<input type="text" value="bob" id="rate" /> 

Как этого добиться?

+0

Phoenix имеет свой ответ, и вы должны проверить селектора, доступные для форм: http://docs.jquery.com/Selectors – Mottie

+0

Dupe: http://stackoverflow.com/questions/1388893/jquery-html-in-firefox-uses-innerhtml-ignores-dom- Изменения – gnarf

ответ

1

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

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

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

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

+0

Я согласен с тем, что стратегия не правильная. Я придумаю другой способ, так много для легкого пути :) – techguytom

0

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

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

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

$("#rate").val("bob"); 
+0

Хотя я понимаю, что вы можете быть в браузере, отличном от Firefox (который отображает эту ошибку). Это не решит проблему вообще: http://jsbin.com/uniko – gnarf

0

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

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

И Второй один является

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

Надеется, что поможет.

1

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

+0

Спасибо, я didn ' Даже знаю, что этот вопрос даже существует ... И для фактического чтения вопроса OP ... :) –

+0

Я не понимал, что это ограничивается проблемой браузера. Другой вопрос даже не появился, когда я искал, прежде чем спрашивать. – techguytom

0

Как насчет того, чтобы не сохранять фактический 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); 
Смежные вопросы