jQuery从表单序列化中排除某些div输入

时间:2019-05-16 02:40:28

标签: jquery

提交表单后,我正在对数据进行序列化,这样我可以捕获字段并将记录添加到数据库中。我知道任何具有'name'属性的字段都将由jQuery序列化。

在名为“ rrule_section”的div中,我根本不希望任何这些输入被序列化!我需要保留其“名称”属性,以便其他某些JavaScript可以正常工作,因此我不能简单地将“名称”留空以解决此问题。

我在rrule_section中将有很多不同的输入类型,但这是下面的示例表格。

<div id="formEventModal" class="modal fade" role="dialog" aria-hidden="true" data-keyboard="false" data-backdrop="static">

<div class="modal-dialog modal-lg">
    <div class="modal-content">
        <div class="modal-header"></div>
        <div class="modal-body">

    <form id="appointmentForm" class="form-horizontal">

       <input disabled type="text" id="attending_name" name="attending_name" class="form-control" value="">

       <input type="text" class="form-control" id="waiting_list_start" name="waiting_list_start" />

    <div name="rrule-gen" id="rrule_section">
       <input type="radio" name="event-recurring" value="no" checked="checked"> No
       <input type="radio" name="event-recurring" value="yes"> Yes
       <select name="freq">
            <option value="daily" class="days">Daily</option>
            <option value="weekly" class="weeks">Weekly</option>
            <option value="monthly" class="months">Monthly</option>
            <option value="yearly" class="years">Yearly</option>
       </select>
       <input type="text" name="until" id="end-date" disabled="disabled" class="hasDatepicker dont_serialize">
    </div>

</form>

...
... 

提交表单后,我有以下提示:

  $.ajax({
            url: "ajax_insert.php?table=appointments",
            dataType: 'json',
            type: "POST",
            data: $('#formEventModal #appointmentForm').serialize(),
 ....

我当时以为我需要使用.not选择器,但它仍会序列化所有内容:

$('#formEventModal #appointmentForm').not('#rrule_section').serialize()

如何阻止rrule_section输入序列化?

2 个答案:

答案 0 :(得分:1)

由于tcj使我走上了正确的轨道,所以我最终只向不需要序列化的每个输入添加了一个类。然后我用这个:

X 10 rows overlapping with T and 2 different 
T has 10 overlapping with X and 2 different 
X has 10 overlapping with P and 1 different 
T has 10 overlapping with P and 3 different 

谢谢!

答案 1 :(得分:0)

在jQuery中选择多个元素时,您必须在每个元素后加上逗号,以使data: $('#formEventModal, #appointmentForm').serialize(),但在您的情况下却无济于事,您可以像这样手动添加字段:

data: $('#attending_name, #waiting_list_start').serialize(),

或其他类似的替代方法:

data: 'attending_name=' + $('#attending_name').val() + '&waiting_list_start=' + $('#waiting_list_start').val();

或使用此方法自动收集#rrule_section之外的所有字段:

data: $('#appointmentForm > :not([id="rrule_section"])').serialize();

或者这也等同于遵循您编写它的方式(您几乎是对的,只是忘记了选择孩子):

data: $('#appointmentForm').children().not('#rrule_section').serialize();