jQuery - 能够在条件上禁用复选框,但奇怪的问题

时间:2011-04-13 06:32:27

标签: jquery

我在Google搜索中发现了一些jQuery代码,这些代码允许我根据单个选择框的用户输入禁用特定类别的复选框。我工作得很好,我甚至添加了一些代码来灰化描述文本框的文本。但是,如果用户返回/重新访问页面,我会使用PHP(特别是会话变量)和MySQL重新填充选择框'值,当发生这种情况时,复选框不再基于选择框的值显示为灰色。我认为这是因为该功能要求用户实际选择一个选项,而不是它是页面加载时的选定选项。有没有办法解决?请参阅以下代码:


$(function(){
  var arrValPS = [ "3-Year-Old Program","Prekindergarten", "Kindergarten" ];

$("#grade").change(function(){ var valToCheck = String($(this).val());

if ( jQuery.inArray(valToCheck,arrValPS) == -1 )
{

$(".psc").attr("disabled", "true"); jQuery('.pscdiv').fadeTo(500,0.2);

}
else
{
        $(".psc").removeAttr ( "disabled" ); 
        jQuery('.pscdiv').fadeTo(500,1);   
}        

}); }); $(function(){ var arrValLS = [ "1st Grade","2nd Grade","3rd Grade","4th Grade","5th Grade" ];

  $("#grade").change(function(){
  var valToCheck = String($(this).val());

    if ( jQuery.inArray(valToCheck,arrValLS) == -1 )
    {
  $(".lsc").attr("disabled", "true"); 
  jQuery('.lscdiv').fadeTo(500,0.2);

    }
    else
    {
            $(".lsc").removeAttr ( "disabled" ); 
            jQuery('.lscdiv').fadeTo(500,1);   
    }        
  });
});

$(function(){ var arrValMS = [ "6th Grade","7th Grade","8th Grade" ];

  $("#grade").change(function(){
  var valToCheck = String($(this).val());

    if ( jQuery.inArray(valToCheck,arrValMS) == -1 )
    {
  $(".msc").attr("disabled", "true"); 
  jQuery('.mscdiv').fadeTo(500,0.2);

    }
    else
    {
            $(".msc").removeAttr ( "disabled" ); 
            jQuery('.mscdiv').fadeTo(500,1);   
    }        
  });
});

复选框的一个示例:

if ( jQuery.inArray(valToCheck,arrValPS) == -1 )
{

更新#1

我在下面尝试过阿卜杜拉的代码并没有成功。我也尝试了其他建议并没有成功。有几个人说我基本上可以使用更少的代码,但是我尝试过的一切都没有用,而我现在所做的一切都很完美,除了我发布这个问题的一个唠叨问题。尽管我想减少它,但对我来说,首先解决问题对我来说更为重要。

3 个答案:

答案 0 :(得分:0)

您只需要在文档准备就绪时在您正在寻找的元素上触发更改事件:

$(function() {
    $("#grade").change();
});

顺便说一句,你可以在同一个'change'处理程序中拥有所有不同的情况。

答案 1 :(得分:0)

在页面加载事件上调用该函数可以解决您的问题。

答案 2 :(得分:0)

这真的需要进一步重构,但只是回答你的问题,你需要在页面加载时调用相同的代码,所以将它移动到一个函数中并在页面加载和更改事件上调用它:

$(function(){
    $("#grade").change(checkVals);
    checkVals(); // run it on page load
});

function checkVals() {
    var valToCheck = String($("#grade").val());
    if ( jQuery.inArray(valToCheck,arrValPS) == -1 )
    {
        $(".psc").attr("disabled", "true"); 
        jQuery('.pscdiv').fadeTo(500,0.2);
    }
    else
    {
        $(".psc").removeAttr ( "disabled" ); 
        jQuery('.pscdiv').fadeTo(500,1);   
    }        

    var arrValLS = [ "1st Grade","2nd Grade","3rd Grade","4th Grade","5th Grade" ];
    if ( jQuery.inArray(valToCheck,arrValLS) == -1 )
    {
        $(".lsc").attr("disabled", "true"); 
        jQuery('.lscdiv').fadeTo(500,0.2);
    }
    else
    {
        $(".lsc").removeAttr ( "disabled" ); 
        jQuery('.lscdiv').fadeTo(500,1);   
    }        

    var arrValMS = [ "6th Grade","7th Grade","8th Grade" ];
    if ( jQuery.inArray(valToCheck,arrValMS) == -1 )
    {
        $(".msc").attr("disabled", "true"); 
        jQuery('.mscdiv').fadeTo(500,0.2);
    }
    else
    {
        $(".msc").removeAttr ( "disabled" ); 
        jQuery('.mscdiv').fadeTo(500,1);   
    } 
}