给出这个html输入元素,< input id =“input1”type =“text”/>
如果用户输入'test'值,jQuery中是否有办法将其序列化为字符串?
我要找的输出是< input id =“input1”type =“text”value =“test”/>
我没有将它复制到DOM中的另一个元素,我需要实际的字符串,所以我可以将它发送到EVOPdf。我已经尝试过克隆(true),但它没有给我任何用户输入输入的值。
我不得不解析html()字符串并为每个输入插入一个值,除非有人知道更好的方法。
答案 0 :(得分:2)
我的测试结果是,属性值与值值无关 - 至少在我使用Safari 5.1和FF 6测试时是这样的。< / p>
所以,如果我修改了文本字段的内容(我输入了ueoau)并选择它
> var text = $('input[type=text]').first()
并使用.val()
> text.val()
"ueoau"
但是获取它的标记会将值呈现为空(这个片段来自james的回答)
> $('<div>').append(text.clone()).remove().html()
"<input autocomplete="off" name="q" class="textbox" placeholder="search" tabindex="1" type="text" maxlength="140" size="28" value="" style="width: 200px; max-width: 200px; ">"
获取属性值也不起作用(在这里使用DOM getAttribute
来避免jQuery在attr()
中的魔力
> text[0].getAttribute('value')
""
同样,属性值与值值不同。因此,您可以使用的一种解决方法是将其属性设置为其值
> text[0].setAttribute('value', text.val())
> $('<div>').append(text.clone()).remove().html()
"<input autocomplete="off" name="q" class="textbox" placeholder="search" tabindex="1" type="text" maxlength="140" size="28" value="ueoau" style="width: 200px; max-width: 200px; ">"
哪个适合我。我想我对此的解释是属性值仅代表字段的初始值,之后不会与其真值同步。
答案 1 :(得分:0)
jQuery具有.val()
方法,该方法返回输入值:
var value = $("#input1").val();
对于元素本身的html(包括值),尝试将克隆封装在新元素中,获取html并删除它:
var html = $('<div>').append($('#input1').clone()).remove().html();
答案 2 :(得分:0)
<强>更新:强>
HTML:
<input id="test" type="text">
<input type="button" id="foo" value="press me">
jQuery的:
// fullHTML plugin-function
$.fn.fullHTML = function(){
var $this = $(this);
return $('<div>')
.append($this.clone())
.remove()
.html()
.replace('<input ','<input value="'+ $this.val() +'" ');
};
$(function(){
$("#foo").click(function(){
alert ( $("#test").fullHTML() );
});
});
工作示例: http://jsfiddle.net/n6Phu/
P.S。此代码仅适用于输入,并且仅捕获用户指向的value
属性。其他属性将不会显示。
答案 3 :(得分:0)
怎么样;
var fragment = $("#input1").attr("value", "test").get(0).outerHTML;
请注意,与.html()相比,这将返回解释标记;例如,IE将大写节点名称&amp;剥去报价
答案 4 :(得分:0)
需要使用outerHTML() http://darlesson.com/jquery/outerhtml/