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