2011-03-15 17 views
27

我有一個非常簡單的形式,有一個複選框,我發現我的複選框值並沒有被拾起我的服務器端應用程序:jQuery表單帖子將布爾型複選框轉換爲「on」和「off」?

$.post('CreateForm', $('#new-form').serialize(), ... 

其他一切崗位正確,但我在看到螢火蟲它會將複選框的值序列化爲「on」或「off」而不是「true」和「false」,我用正常的<form method="post" action="formpage">得到......這裏發生了什麼,這是預期的行爲嗎?我的服務器端模型綁定器不會將「on」與「true」等同起來,因此會降低該值。顯然我可以更換模型綁定器,但要確保我沒有做錯。

編輯:

這裏是我的標記:

<input type="checkbox" name="CheckboxValue" > 

的jQuery 1.4.4版

在Firebug中,這裏的產生後:

... other variables &CheckboxValue=on 
+2

一個複選框使用其名稱和值序列化。檢查複選框的名稱和值屬性。 – 2011-03-15 20:40:11

回答

55

的問題是,您的複選框沒有value屬性。當jQuery序列化表單時,它使用'on'作爲默認值。

你應該給你的複選框值:

<input type="checkbox" name="CheckboxValue" value="true" /> 

看到這裏例如:http://jsfiddle.net/U6Sbw/1/

+2

jQuery爲什麼要這樣做?肯定'真'會是一個更好的默認? – kristianp 2017-08-30 11:05:09

7

以下是我所做的似乎很好的工作。我正在使用js2form來編組ming/jackson控制器。

有我有以下運行的函數:

$('input[type=checkbox]').unbind('click.checks').bind('click.checks', function(e){ 
    $(this).val($(this).is(':checked')); 
});