OK,作为一个服务器开发,ASP.NET页(基于母版页上)呈现在客户端上此Javascript巫术是有点过分了我,似乎: - )

我决定尝试使用jQuery来处理一些客户端启用和UI元素的禁用。

我有两个单选按钮(rbnDoLimitrbnDontLimit),以及三个复选框(months12months24months36) - 如果我点击rbnDoLimit,我想使他们三个人,如果我点击rbnDontLimit,我喜欢清除并禁用三个复选框。似乎很简单,是吗?

所以,我下载了,在我的ASP.NET Web窗体3.5 jQuery的包括1.3.2 - 工程确定,我可以显示在$(文件)的“警报”。就绪事件

我的两个单选按钮获取的页面呈现出如:

<input id="ctl01_cphContent_pnlBasicInfo_rbnDontLimit" 
       type="radio" name="ctl01$cphContent$pnlBasicInfo$LimitMVD" 
       value="False" checked="checked" />
<input id="ctl01_cphContent_pnlBasicInfo_rbnDoLimit" 
       type="radio" name="ctl01$cphContent$pnlBasicInfo$LimitMVD" 
       value="True" />

和我的三个复选框为:

<span class="dcDetails"><input id="ctl01_cphContent_pnlBasicInfo_months12" 
      type="checkbox" name="ctl01$cphContent$pnlBasicInfo$months12" /></span>
<span class="dcDetails"><input id="ctl01_cphContent_pnlBasicInfo_months24" 
      type="checkbox" name="ctl01$cphContent$pnlBasicInfo$months24" /></span>
<span class="dcDetails"><input id="ctl01_cphContent_pnlBasicInfo_months36" 
      type="checkbox" name="ctl01$cphContent$pnlBasicInfo$months36" /></span>

我装饰它们与CSS类dcDetails(其不存在 - 但旨在被用于jQuery中选择它们)。我注意到的第一件事是,随着预期的CSS类没有被应用到我的<input>元素,但在周围的<span>一个<input>元素......(第一神秘我.....)。无论如何.....

我的第一个jQuery的尝试看起来是这样的:

<script type="text/javascript">
    $(document).ready(
        $("#<%= rbnDontLimit.ClientID %>").click(function() {
            $(".dcDetails").attr('disabled','false'); 
        },
        $("#<%= rbnDoLimit.ClientID %>").click(function() {
            $(".dcDetails").attr('disabled','true'); 
        });
</script>

没有运气 - 我可以点击我想要的两个单选按钮 - 什么也没有发生。我想这是因为dcDetails CSS类是围绕复选框的<span>吧?

确定 - 因此它变得有点混乱,但这应该工作!现在,我选择三个复选框具体地说,通过其ClientID - 这应该是准确的,并得到正确的要素,我想:

<script type="text/javascript">
    $(document).ready(
        $("#<%= rbnDontLimit.ClientID %>").click(function() {
            $("#<%= months12.ClientID %>").attr('disabled','false'); 
            $("#<%= months24.ClientID %>").attr('disabled','false'); 
            $("#<%= months36.ClientID %>").attr('disabled','false'); 
        },
        $("#<%= rbnDoLimit.ClientID %>").click(function() {
            $("#<%= months12.ClientID %>").attr('disabled','true'); 
            $("#<%= months24.ClientID %>").attr('disabled','true'); 
            $("#<%= months36.ClientID %>").attr('disabled','true'); 
        });
</script>

再次没有运气......

那么到底是什么我错过?所有这些伟大的时髦的演示似乎无法帮助我理解为什么这是行不通的 - 即使不是有点....我想我失去了一些东西很基础,很基础 - 但我似乎无法人物出来,那是什么! : - )

马克

<强>更新结果 没有太多的运气还没有:-(我我的样本剥离下来到准系统HTML页面 - 但我一直在和一遍又一遍有此错误,无论哪个各种提示我尝试的:

页面错误细节

消息:对象不支持此属性或方法 行:3032 字符:6 代码:0 URI:文件:/// d:/projects/JQuery1/jquery-1.3.2.js

看起来几乎是一个错误内心深处的jQuery .......任何想法?

<强>更新2:结果 我开始觉得我做的事情根本错在这里....我认为在的document.ready()函数,我可以挂接在两个单选按钮,单击事件。我失去了一些东西在这里?我需要创建一个我从单选按钮的客户端“上点击”事件,而不是调用一个函数?无论我试图做的,即使是在我的HTML编辑器(鼎品4) - 这个错误“对象不支持此属性或方法”不断弹出所有的时间 - 方便的没有告诉我哪对象是指,的也不告诉我不支持什么属性或方法........

还是我做错了什么努力挂钩的的document.ready两个click事件处理函数()?

在按比例缩小,HTML仅版本可在 http://jquery.bluenose.ch/jquerydemo html的的人谁可能有兴趣 - 我希望能够点击“别限制”单选按钮,并已将其禁用它下面的三个复选框 - 不走: - (

有帮助吗?

解决方案

我看了看你的例子,有一些语法问题。

您示例:

 $(document).ready(
    $('#rbnDontLimit').click(function() {
        $(".dcDetails :input").removeAttr('disabled');
    }),
    $("#rbnDoLimit").click(function() {
        $('.dcDetails :input').attr('disabled', 'true');
    }));

您体都失去了“功能(){”之后的准备和其相应的“}”结尾。 之间的逗号点击事件应该是一个分号。 从jQuery选择:“输入”删除。 这应该为你工作:

   $(document).ready(function() {
        $('#rbnDontLimit').click(function() {
            $(".dcDetails").removeAttr('disabled');
        });
        $("#rbnDoLimit").click(function() {
            $('.dcDetails').attr('disabled', true);
        });
    });

其他提示

尝试改变:

$("#<%= months12.ClientID %>").attr('disabled','false')

为:

$("#<%= months12.ClientID %>").attr('disabled','disabled')

$("#<%= months12.ClientID %>").attr('disabled','true')

为:

$("#<%= months12.ClientID %>").attr('disabled','')

使用基隆的回答,然后......

$("#<%= rbnDontLimit.ClientID %>").click(function() {
            $(".dcDetails").attr('disabled','false'); 
}

也可以更改为:

$("#<%= rbnDontLimit.ClientID %>").click(function() {
            $(".dcDetails > :checkbox").attr('disabled','disabled'); 
}

要禁用一个复选框(任何控制),I使用以下

$("#chkSomething").attr("disabled", "true")

要启用一个复选框(任何控制),I使用以下

$("#chkSomething").removeAttr("disabled")

要回答你的问题,

<script type="text/javascript">
    $(document).ready(
        $("#<%= rbnDontLimit.ClientID %>").click(function() {
            $("#<%= months12.ClientID %>").removeAttr("disabled"); 
            $("#<%= months24.ClientID %>").removeAttr("disabled"); 
            $("#<%= months36.ClientID %>").removeAttr("disabled"); 
        },
        $("#<%= rbnDoLimit.ClientID %>").click(function() {
            $("#<%= months12.ClientID %>").attr('disabled','true'); 
            $("#<%= months24.ClientID %>").attr('disabled','true'); 
            $("#<%= months36.ClientID %>").attr('disabled','true'); 
        });
</script>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top