2011-11-10 133 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,因为它会阻止实际检查复选框(除非它是您想要的行为)。