首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery .clone()整个.clone表单及其所有值

jQuery .clone()整个.clone表单及其所有值
EN

Stack Overflow用户
提问于 2015-02-16 19:27:33
回答 2查看 1.5K关注 0票数 0

我使用jQuery和一个$.ajax()调用通过post发布一些复杂的HTML到我的数据库。我能够通过.html()获得表单的结构,但是用户的选择在这个过程中丢失了。我想我可以用.clone()代替,但是我得到了一个错误:

Uncaught :无法从‘HTMLInputElement’读取'selectionDirection‘属性:输入元素的类型(’隐藏‘)不支持选择。

代码语言:javascript
复制
// Cloning my form
var myFormHTML = $("#myForm").clone();

console.log(myFormHTML);

var inputData = {
  advancedSearchHTML: myFormHTML,
  otherParam: otherVar
};

console.log(inputData);

// JS ERROR is down here in the $.ajax() call:
$.ajax({
    type: "POST",
    url: 'serverSideScript.php',
    dataType: 'html',
    data: inputData,
    success: function (response) {
        console.log(response);
    }
});

这些表单非常复杂,包括100多个<input type="hidden">,它们根据用户的选择而变化。我无法改变它的工作方式。所以我的问题是,我有一个由用户生成的具有HTML的复杂表单,我需要同时复制HTML及其所有值,这样它就可以插入到我的数据库中,并最终重新加载到DOM中,也许几个月后。有什么想法吗?

编辑:我尝试了我能想到的所有东西,但我似乎无法从中获取用户输入值,这令人沮丧,因为我习惯于只在Chrome的检查器中点击"Copy“,所以在我看来,从<form>中获取相同的HTML作为字符串应该很容易。我尝试过的一些事情:

代码语言:javascript
复制
$myFormHTML.html()
$myFormHTML.innerHTML
$myFormHTML.outerHTML
$myFormHTML.get(0).innerHTML
$myFormHTML.get(0).outerHTML
JSON.stringify($myFormHTML.html())

我已经得到了一个完整的jQuery对象,当它附加到DOM时,它包含了用户的所有输入(:选中的状态、:选中的状态、检查的状态、输入值等)。我需要接受这个jQuery对象,并将它的所有HTML内容输出到一个可以传输到服务器的字符串中。有人知道该怎么做吗?也许有一种方法可以在$.append()期间完成相同的循环,这样我就可以从头开始构建一个字符串了吗?还有其他想法吗?

EN

回答 2

Stack Overflow用户

发布于 2015-02-16 21:22:42

http://api.jquery.com/serialize/

这完全是您想要的,除非您的表单是由用户输入生成的,所以不能验证它是否有效。如果表单标记不正确,则无法序列化数据。

下面是一个例子:

http://jsfiddle.net/jyc30nxz/1/

代码语言:javascript
复制
$('#myForm').serialize();

这其中的一个重要方面是,如果表单输入没有"name“属性,则不能在序列化期间返回它的值--这就是为什么您以空字符串结束。

编辑:

这也适用于:

代码语言:javascript
复制
console.log($(this).clone().html())

我猜您的表单标记无效。

票数 1
EN

Stack Overflow用户

发布于 2015-02-16 19:43:23

你试过.serialize表单内容了吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28548898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档