你如何获得字符串的html和值输出

时间:2011-11-11 16:21:45

标签: javascript jquery

给出这个html输入元素,< input id =“input1”type =“text”/>

如果用户输入'test'值,jQuery中是否有办法将其序列化为字符串?

我要找的输出是< input id =“input1”type =“text”value =“test”/>

我没有将它复制到DOM中的另一个元素,我需要实际的字符串,所以我可以将它发送到EVOPdf。我已经尝试过克隆(true),但它没有给我任何用户输入输入的值。

我不得不解析html()字符串并为每个输入插入一个值,除非有人知道更好的方法。

5 个答案:

答案 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/