2011-06-06 38 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({/.../});