2011-11-10 173 views
0

在我工作的窗體中有很多複選框。每次用戶點擊一個複選框時,我想使用jquery ajax來發布值。它應該像下面的代碼一樣,但我不確定。它不工作。提交jQuery的複選框

<script type="text/javascript" > 
$(function() { 
$(".autosubmit_checkbox").click(function() { 

    var value = $(this).val(); 
    var name = $(this).attr('name');; 
    var dataString = 'value=' + value + '&name=' + name; 

    $.ajax({ 
     type: "POST", 
     url: "URL", 
     data: dataString, 
     success: function(){ 
      something; 
     } 
    }); 

    return false; 
}); 
}); 
</script> 
+0

你使用asp.net嗎? asp:複選框? –

+0

嗯,首先,URL需要指向一個Web地址。此外,你不應該在相同的函數中執行兩次'$(this)'。做這個'var $ this = $(this);'然後用'$ this'代替。 – arb

+1

你也沒有說具體是不是工作。 – arb

回答

0

如果你想在查詢字符串中提交的「正常」的方式複選框的價值,你必須建立一個請求參數:

var dataString = $(this).attr('name') + "=" + encodeURIComponent($(this).val()); 

serialize()會爲你計算這個字符串,但是如果複選框未被選中,它會返回一個空字符串,這顯然不是你想要的。

+0

謝謝,它應該工作。但是有一個小問題,我無法檢查複選框。可能是什麼問題? – seferov

+0

@Farhad,這是因爲你從你的'click'處理程序返回'false',從而阻止默認行爲發生(並且防止事件冒泡)。 –

0
<script type="text/javascript" > 
$(function() { 
$(".autosubmit_checkbox").click(function() { 

    var value = $(this).is(':checked')?"1":"0"; 
    var name = $(this).attr('name');; 
    var dataString = 'value=' + value + '&name=' + name; 

    $.ajax({ 
     type: "POST", 
     url: "URL", 
     data: dataString, 
     success: function(){ 
      something; 
     } 
    }); 

    return false; 
}); 
}); 
</script> 
0
var value = ($(this).is(':checked')) ? 1 : 0; 
0

使用$(this).is(':checked')而不是$(this).val(),並避免返回false,因爲它會阻止實際檢查複選框(除非它是您想要的行爲)。