如果某个字段具有值jQuery,则序列化某种形式的表单数据

时间:2016-09-28 14:12:04

标签: javascript php jquery html forms

我有一个页面有几种形式(数字不同,因为它们是动态加载的)。我可以遍历页面上的每个表单并序列化其数据以发送到我的服务器。我想知道是否只有在勾选任何给定形式的复选框时才能将数据序列化/添加到数组中(并且它给出了我需要使用的值)? 这是我的代码:

的Javascript

$('body').on('click', '.saveStates', function () {
    $('.states_list').each(function (key, value) {
            forms.push($(this).serialize());
    });

HTML

   <form class="states_list">
    <input type="checkbox" class="selected_state" name="active_state" value="<?php echo $state['id']; ?>"
    <input type="text" class="col-md-10" name="pdf_price" id="pdf_price" value="<?php echo $state['pdf_price']; ?>">
    </form>
<button type="button" class="saveStates btn btn-success">Save</button>

我需要检查类selected-state的复选框是否有值(勾选),然后将该表单添加到forms数组中。我在考虑做这样的事情:

$('.states_list').each(function (key, value) {
    if($('.selected_state').val()){
        forms.push($(this).serialize());
}
});

但这不起作用。 欢迎任何帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用.has()过滤它:

$('body').on('click', '.saveStates', function() {
  $('.states_list').has('.selected_state:checked').each(function(key, value) {
    forms.push($(this).serialize());
  });
});

但你的代码可能就是:

$('body').on('click', '.saveStates', function() {
  var forms = $('.states_list').has('.selected_state:checked').serializeArray();
  console.log(forms)
});

答案 1 :(得分:0)

我不确定我是否得到了这个问题。

如果您只需要检查是否已选中该复选框以便发送表单 if ($(this).is(":checked")) forms.push($(this).serialize());