2011-06-06 93 views
0

我有一个很大的形式,将由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(); 

此代码不能正常工作,因为它应该..

回答

1

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

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

编辑 - 对不起,我的错误,我错过了最后一个小括号,我想它和它的作品对我来说

+0

是的,这是我想要实现的。格拉齐尼古拉。 Ci provo。 Ti prego非scappare !! NE ho davvero bisogno !! – 2011-06-06 15:16:58

+0

它不起作用,它给了我一个语法错误=/ – 2011-06-06 15:19:59

+1

@Diego最后还是有一个'';'丢失了'。 – 2011-06-06 15:21:52

2

首先,select不能有一个空值。如果未设置selected属性,它将默认为第一个option。其次,$('select option:empty')选择空的option s。要做一些事情,option应该有一个值,所以afaik选择器将永远不会工作。

你需要做的是检查所有select s,看他们是否有一个不同于他们的默认值,如果不是这种情况,请删除它们。

+0

我该如何做到这样?我不是一个jQuery开发人员... – 2011-06-06 15:15:50

+0

@Diego请参阅[Nicola](http://stackoverflow.com/questions/6254059/jquery-serialize-remove-empty-select/6254140#6254140)的答案。这是一个好的开始,但它不适用于其他默认值。 – 2011-06-06 15:20:49

0

尝试

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

阅读Nicola的评论后编辑。

+1

'$('select option:empty')。parent()。remove();'即使未选中,也会删除所有具有空值的选择,另一个不起作用我不认为你使用选择器这样的方式:它可以与其他属性 – 2011-06-06 15:34:33

0

我只是代替serlizing的整体形式,我会用jquery Form然后你必须要做的是打电话

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