2011-08-24 113 views
3

我試圖通過包括jQuery中.serialize()

$('form').serialize(); 

與選中單選複選框是不幸的字段通過jQuery $。員額提交表單和序列化表單數據爲空值字段沒有被序列化,ergo提交。

是否有一種方法可以包含所有字段,而不管它們是否包含值?

我想這隻會影響像這樣

<input type="checkbox" name="some_name[]" value="1" /> 
<input type="checkbox" name="some_name[]" value="2" /> 
+1

他們只會被提交(和序列),如果他們進行了檢查,否則什麼都不提交。 – Neal

回答

-2

領域你看起來如本live demo是錯誤的。該foo字段包含即使它不包含任何值:

<form> 
    <input type="text" name="foo" /> 
    <input type="text" name="bar" value="baz" /> 
</form> 

然後:

alert($('form').serialize()); 

印刷品(如預期):

foo=&bar=baz 
+1

但是未選中的複選框呢?我認爲這是問題。 – Neal

+0

看到2之間的區別:http://jsfiddle.net/maniator/apGC3/ – Neal

+0

@Neal,這是正常的,與jQuery無關。未經檢查的複選框值不會發送到具有常規表單提交的服務器,並且jQuery.serialize方法與此行爲一致。順便說一句,這就是爲什麼ASP.NET MVC CheckBoxFor helper生成與複選框同名的隱藏輸入值的原因。 –

2

製作自己的版本序列號:

(function($){ 
    $.fn.mySerialize = function() { 
    var returning = ''; 
    $('input, textarea',this).each(function(){ 
      var name = this.name; 
      var value = this.value; 
      returning += name + '=' + value + '&'; 
    }) 
    return returning; 

    }; 
})(jQuery); 


$('form').mySerialize(); 

小提琴:http://jsfiddle.net/maniator/apGC3/