我希望能够做的是使用jQuery更改输入文本框的“value =”。最终目标是使用.html()获取表单,以便我拥有所有代码,以及输入框中输入的值。
作为一个例子,我有这个:
<span id="example">
<input type="text" value="" id="rate" />
</span>
如果用户在输入框中键入,我可以使用.val保存数据,但我想要的是抓取HTML,这样我就可以重新显示带有值的输入框。
如果用户在输入中键入“bob”。然后我用:
var test = $('#example').html();
变量'test'包含以下内容:
<input type="text" value="" id="rate" />
我想要的是:
<input type="text" value="bob" id="rate" />
我如何实现这一目标?
答案 0 :(得分:1)
我认为这个问题与SO138893: jQuery html() in firefox (uses .innerHTML) ignores DOM changes重复。答案应该解决你的问题。我不认为这个新问题应该被删除 - 它可能有助于其他人找到通往另一个的方式。
答案 1 :(得分:1)
最终目标是使用.html()获取表单,以便我拥有所有代码,以及输入框中输入的值。
这个策略让你失败了。表单值是一个单独的数据层,与HTML属性分开存储。 HTML value
属性反映在对象的defaultValue
属性中,不是 value
属性。
设置表单控件的值或选中/选择性不会更改HTML DOM属性;因此,使用innerHTML
或html()
序列化表单不会为您提供表单值 - 除非在IE中,因为存在错误。
(IE中还有其他关于序列化名称更改的表单的错误。只是避免使用序列化;从value
或val()
记住值本身更可靠。)
答案 2 :(得分:0)
要使用id率更改输入元素的值,可以使用此值。
$("#rate").val(newvalue);
将值设置为bob use
$("#rate").val("bob");
答案 3 :(得分:0)
我检查了你的代码,它运行正常。唯一缺少的是输入字段的类型。您可以尝试以下方法
$('#example')[0].innerHTML
第二个是
$("#rate")[0].outerHTML
希望这会有所帮助。
答案 4 :(得分: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);