如何使用jquery获取带有输入值的HTML字符串?

时间:2013-04-11 13:30:32

标签: jquery

我需要在服务器上将HTML创建为pdf,并且需要来自浏览器的HTML,其中包含form和其他内容。执行$el.html()只会在表单中提供不带input值的HTML字符串。如何获取包含所有string值的HTMl input

我不想在浏览器上附加克隆,我只对HTML字符串感兴趣,并将所有输入值传递给服务器。

谢谢!

2 个答案:

答案 0 :(得分:4)

我认为这应该有效。只需在致电.html()

之前运行此功能
$("input[type='text']").each(function () {
    var $this = $(this);

    $this.attr("value", $this.val());
});

http://jsfiddle.net/GyrWY/1/

注意:如果您需要为其他输入类型执行此操作,则需要以不同方式处理它们。对于textarea,您需要设置.text($this.val()),对于复选框和单选按钮,您需要设置checked属性。 select元素,您必须设置相应selected的{​​{1}}属性。

答案 1 :(得分:4)

也许会这样做:

$("input").each(function() {
    $(this).attr("value", $(this).val());
});
$("textarea").each(function() {
    $(this).text($(this).val());
});
$("select option").each(function() {
    if ($(this).is(":selected")) {
        $(this).attr("selected", "selected");
    } else {
        $(this).removeAttr("selected");
    }
});
$("checkbox").each(function() {
    if ($(this).is(":checked")) {
        $(this).attr("checked", "checked");
    } else {
        $(this).removeAttr("checked");
    }
});

这为所有类型的输入设置适当的DOM属性以匹配其当前状态。我希望我没有错过任何一个。

您可能希望克隆整个DOM并对其进行操作。上面的代码会影响用户按下表单的“重置”按钮时发生的情况,当前状态将被视为默认状态。