jQuery序列化移除空Select

jQuery serialize remove empty Select

本文关键字:Select 序列化 jQuery      更新时间:2023-09-26

我有一个大表单,它将由jQuery函数序列化。

问题是,在序列化所有空值之前,我需要从该表单中删除。

我找到了一种方法,成功地删除了所有空的输入文本字段,但没有删除选择。

它不能与选定的下拉菜单一起正常工作。

下面的标题:

echo "<script type='"text/javascript'">
$(document).ready(function() {
    $('#submForm').validate({ 
        submitHandler: function(form) {
            // Do cleanup first
            $('input:text[value='"'"]', '#submForm').remove();
            $('select option:empty', '#submForm').remove();
            var serialized = $('#submForm').serialize();
             $.get('".$moduleURL."classes/DO_submission.php', serialized);
            window.setTimeout('location.reload()', 8000);
            return false;
            form.submit(); 
        }
    })
});

它应该完全删除值为空的下拉选择。序列化函数中不仅不应包含选项,而且不应包含整个选择框。

我该如何做到这一点?

$('select option:empty', '#submForm').remove();

此代码无法正常工作。。

首先,select不能有空值。如果未设置selected属性,则默认为第一个option

第二,$('select option:empty')选择空的option s。要做某事,option应该有一个值,所以afaik选择器永远不会工作。

您需要做的是检查所有select,看看它们的值是否与默认值不同,如果不是,请删除它们。

如果使用"空选择",意味着用户没有选择"有效"选项(例如,选择的第一个选项是<option value=''>Select your value</option>),为什么不迭代选择并检查其值?

$('select').each(function(){
    if ($(this).val() === ''){//this assumes that your empty value is ''
       $(this).remove();
    }
});

EDIT-很抱歉出现错误,我错过了最后一个括号,我试过了,它对我有效

我不想对整个表单进行序列化,而是使用jquery form,然后你所要做的就是调用

 $('#submForm').ajaxSubmit({/.../});

尝试

$('select option:selected:empty').parent().remove(); 

阅读尼古拉的评论后编辑。