Jquery复选框问题

时间:2011-12-01 11:38:45

标签: jquery

我在页面中有一个复选框,在页面上加载它是未选中的。检查复选框时,正确传递值TRUE,但是当在页面加载时未选中该复选框时,值FALSE未被传递。我使用以下代码来执行此操作。

$(document).ready(function () {
    $('#MemberCountryOptInchkbox').change(function(){
        if($(this).attr('checked')){
              $(this).val('TRUE');
         }else{
              $(this).val('FALSE');
         } 
    });
});

5 个答案:

答案 0 :(得分:0)

请注意,JustAnil的评论指向了IMO的完美答案。

如果未选中复选框,则在发布表单时,不会发布任何内容 - 只有在选中该复选框时才会提交。

所以服务器方面,如果request.forms或类似的复选框没有值,那么你可以假设它没有被检查。

答案 1 :(得分:0)

取消选中复选框后,表单不会传递其值。如果您不想检查此行为,请使用隐藏字段。

答案 2 :(得分:0)

尝试使用click处理程序而不是change

$('#MemberCountryOptInchkbox').click(function(){

答案 3 :(得分:0)

您的当前实现会在加载页面时将更改处理程序附加到您的复选框。但是,这并不意味着代码在页面加载时执行。要做到这一点,你应该有以下几点:

$(document).ready(function () {

    $('#MemberCountryOptInchkbox').change(function(){
        if($(this).attr('checked')){
            $(this).val('TRUE');
        }else{
             $(this).val('FALSE');
        }
    });

    if($(this).attr('checked')){
        $(this).val('TRUE');
    }else{
         $(this).val('FALSE');
    }
});

这可确保代码在页面加载时也执行一次。

答案 4 :(得分:0)

解决方案对您的问题很简单,您可以在复选框中使用以下标记

<input type="checkbox" value="FALSE">...

如果未选中该复选框,则会向服务器提交值“FALSE”