jQuery序列化删除空选择

时间:2011-06-06 15:06:16

标签: javascript jquery

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

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

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

选择下拉列表无效。

以下Ceck:

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();

此代码无法正常工作..

4 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

如果使用'空选择'表示用户没有选择“有效”选项(例如,选择的第一个选项是<option value=''>Select your value</option>),为什么不迭代选择并检查他们的值?

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

编辑 - 抱歉错误,我错过了最后一个括号,我尝试了它,它适用于我

答案 2 :(得分:0)

尝试

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

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

答案 3 :(得分:0)

我只是将整个表格用于jquery Form而不是整理表格,然后你所要做的就是调用

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