2

我需要序列化表单中的所有字段,但select option选择的值是默认值的标签除外。我的选择选项 html 标签是这样的。如果所选选项没有值,则需要从 jquery 序列化方法中忽略它。

<select>
  <option>Select a brand</option>
  <option value='1'>Sony</option>
  <option value='2'>Apple</option>
  <option value='3'>Nokia</option>
</select>
4

2 回答 2

2

感谢您的回答,但我能够通过此代码实现它$(':not(select[value=""])', myForm).serialize()

于 2013-08-16T06:02:19.853 回答
1

演示

function showValues() {
    var str = $('#form1').clone();
    $.each(str[0], function (i, val) {
        var str_new = '<pre>' + str[0][i] + '</pre>';
        if (str_new === '<pre>[object HTMLSelectElement]</pre>') {
            str[0][i].disabled = 'true';
        }
    });
    var str_serialize = str.serialize();
    $('#test').text(str_serialize);
    console.log(str_serialize);
}
$('#sbt').click(function () {
    showValues();
});

带有 id的新var str克隆formform1

用于$.each()循环克隆变量数组

使用'<pre>' + str[0][i] + '</pre>'这些标签,它会像选择标签<pre>[object HTMLSelectElement]</pre>对象类型一样返回

如果<pre>[object HTMLSelectElement]</pre>匹配,那么我disabled在克隆中

最后我习惯serialize()了克隆并且它起作用了。

于 2013-08-16T05:43:59.157 回答