jquery not()函数不与serialize()函数合作

时间:2016-08-12 03:54:51

标签: javascript jquery

我尝试使用序列化以html格式吐出数据的文本字符串。但是,在某些情况下,我想从字符串中排除表单元素。我认为'不是()'在jquery中的函数将是正确的工具,但我遇到了麻烦。

这是我的代码片段...请注意,控制台正在输出包含" setType"的字符串。我试过改变不是not($("setType"))和其他排列......没有运气。



data = $('#setAtributesForm').not("#setType").serialize();
console.log(data);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>

    <form id='setAtributesForm'>
            <label for="setType">Select set type:</label>
            <select id="setType" name="setType">
                <option value="EDI">EDI</option>
                <option value="EWI">EWI</option>
                <option value="EWI">Other</option>
            </select>
            <label for="containersQuantity">Number of containers:</label>
            <input type="number" name="containersQuantity" id="containersQuantity"
    						  min="1" max="40" value="1"/>
    <!-- snip for brevity sake -->
    	</form>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

$('#setAtributesForm')选择的格式不是#setType,因此整个表单会被序列化而忽略not过滤器。

您可以尝试选择所有input元素,然后排除目标元素并序列化

&#13;
&#13;
$('button').click(function() {
  var data = $('#setAtributesForm :input').not("#setType").serialize();
  console.log(data)
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<form id='setAtributesForm'>
  <label for="setType">Select set type:</label>
  <select id="setType" name="setType">
    <option value="EDI">EDI</option>
    <option value="EWI">EWI</option>
    <option value="EWI">Other</option>
  </select>
  <label for="containersQuantity">Number of containers:</label>
  <input type="number" name="containersQuantity" id="containersQuantity" min="1" max="40" value="1" />
  <!-- snip for brevity sake -->
</form>
<button>Test</button>
&#13;
&#13;
&#13;