javascript - jquery .serialize() 不包含序列化字符串中的选择列表选定值

标签 javascript jquery

我想使用 jquery .serialize() 序列化我的 div 部分。我知道我们只能用这个函数序列化表单。因此,为此我创建了我的 div 部分的克隆并将其附加到新创建的表单元素中,然后序列化。其他输入字段正在序列化,但选择列表值未序列化(所选值不在序列化字符串中)。我创建了一个 JSFIDDLE:

http://jsfiddle.net/mj6Eg/1/

HTML

<div id="serializethis">
<label>Quantity</label>
<select id="quantity" name="Quantity" size="1">
  <option value="1">1</option>
  <option value="5">5</option>
  <option value="25">25</option>
  <option value="50">50</option>
</select>
</div>

<button id="serialize">Serialize</button>​

JS

$("#serialize").click(function(){

    var clone = $("#serializethis").clone();
    var form = $("<form />").append(clone);

    alert(form.serialize());

});​

我错过了什么?

最佳答案

clone() -ing 一个元素,其选择的值丢失。所以你的代码将不起作用。最简单的解决方案是保留 <form>始终围绕元素(除非您使用无论如何都需要的 HTML5)。

另一种解决方案是将您的元素临时包装在一个表单中:

$("#serialize").click(function() {
    var data = $("#serializethis").wrap('<form>').parent().serialize();
    alert(data);
    $("#serializethis").unwrap('form');
});

关于javascript - jquery .serialize() 不包含序列化字符串中的选择列表选定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14002512/

相关文章:

javascript - 配置我的代码附加到子级而不是innerHTML

jquery - Slick.js 垂直、中心模式、slidesToShow > 5 不工作

javascript - jQuery 在用户滚动出元素时查找

c# - 如何在代码隐藏中获取使用Raduploader动态创建的文本框的值?

javascript - `clone()` 在 Internet Explorer 6 中不工作

javascript - 使用 document.getElementById 获取变量值后 Highcharts 中断

javascript - 从 AngularJS 工厂返回函数

javascript - 如果你想在 Javascript 中强制对变量进行垃圾回收,将其设置为 null 还是 undefined 更好?

javascript - 我如何在不使用 JavaScript 的情况下使用 JQuery 库来重写它?

javascript - 如何在javascript中检测浏览器选项卡是否关闭或浏览器窗口是否关闭