2014-02-04 5 views
0

У меня есть переменная, содержащая форму с полем ввода, и я бы хотел изменить атрибут value в указанном поле ввода с помощью jquery. Пока что я могу изменить значение, но он не изменяется во внешнем html. Это что я получил до сих пор:Как изменить значение поля ввода в переменной с помощью jquery?

$("a").click(function(event) { 
    var form_content = "<form><input id=\"name\" value=\"Test value\"/></form>"; 
    var test = $('<div />').html(form_content).find('#name').val('New test value').parent(); 
    alert(test.find('#name').val()); 
    alert(test.html()); 
    return false; 
}); 

также доступны на jsfiddle. Первый alert отображает "New test value", но второй alert не показывает никакого намека на то, как это новое значение сохраняется - в основном оно возвращает то же значение, что и исходная переменная form_content.

Я посмотрел here, но не могу понять, что я делаю неправильно.

Может ли кто-нибудь помочь мне соединить точки и, возможно, дать мне понять, как я могу изменить html, хранящийся в form_content? (Кажется, есть много примеров того, как это сделать в простой статической html, но это, к сожалению, не вариант для меня.) Спасибо!

+0

это потому, что обновленное значение не копируется в значение атрибута .. оно сохраняется в свойстве значение входного элемента .. если вам html() он получает t он внутренний html вместе со своими атрибутами, а не свойствами –

+0

Атрибут ввода не изменяется при изменении значения свойства с .val(). Значение входов изменится, но не attr. Проверьте эту скрипту http://jsfiddle.net/tndn7/1/ – Anton

+0

Методы 'val' задают свойство value, если вы хотите изменить атрибут' value' вашего тега ввода, попробуйте 'attr ('val', ' новое значение теста ') '. См. Http://jsfiddle.net/tewathia/tndn7/3/ – tewathia

ответ

1
$("a").click(function(event) { 
    var form_content = "<form><input id=\"name\" value=\"Test value\"/></form>"; 
    var test = $('<div />').html(form_content).find('#name').attr('value', 'New test value').parent(); 
    alert(test.find('#name').attr('value')); 
    alert(test.html()); 
    return false; 
}); 

Обновить ваш запрос, его работает отлично ...

+0

Спасибо @ Sam1604 за наиболее полное решение. – conciliator

0

Не используйте .val ('новое значение теста'), вместо того, чтобы использовать .attr ('значение', 'новое значение теста')

0

Просто поместите тип для вас входной элемент попробовать

 <input type="hidden" id="name" value="Test value"> 
Смежные вопросы