首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >禁用dx aspxbutton

禁用dx aspxbutton
EN

Stack Overflow用户
提问于 2013-07-08 13:16:46
回答 4查看 2.6K关注 0票数 1

我正在尝试根据复选框是否被选中来设置按钮的启用/禁用。下面是我的javascript和asp代码,它不能工作。我不确定是函数根本没有被调用,还是我禁用按钮的方式有问题。

代码语言:javascript
复制
<script type="text/javascript">

function OnChkAgreeChanged(chkAgree) {
    if (document.getElementById"chkAgree").checked)
        document.getElementById("btnSubmit").SetEnabled(true);
    else
        document.getElementById("btnSubmit").SetEnabled(false);
}
</script>


<asp:checkbox ID="chkAgree" runat="server" 
    Text="blablabla" onchange="javascript:OnChkAgreeChanged(this);"/>


<dx:ASPxButton ID="btnSubmit" runat="server" Text="Submit" 
    UseSubmitBehavior="true" AutoPostBack="true" Width="175px" 
    CssClass="submitButton" OnClick="btnSubmit_Click" enabled="false">
</dx:ASPxButton>
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-05-29 04:34:07

DevExpress为它的每个控件创建一个客户端实例对象。在本例中,它将为btnSubmit创建一个ASPxClientButton。因为你没有给btnSubmit一个ClientInstanceName,所以你可以这样访问它:

代码语言:javascript
复制
window.aspxGetControlCollection().elements['<%= btnSubmit.ClientID %>'];

这意味着您的整个处理程序函数可能如下所示:

代码语言:javascript
复制
function OnChkAgreeChanged(chkAgree) 
{
    btnSubmit = window.aspxGetControlCollection().elements['<%= btnSubmit.ClientID %>'];
    if(!(btnSubmit === null || btnSubmit === undefined)) { btnSubmit.SetEnabed(chkAgree.checked); }
}

您还可以通过像这样定义ClientInstanceName属性来简化您的工作:

代码语言:javascript
复制
<dx:ASPxButton ID="btnSubmit" ClientInstanceName="btnSubmit" runat="server" Text="Submit" 
    UseSubmitBehavior="true" AutoPostBack="true" Width="175px" 
    CssClass="submitButton" OnClick="btnSubmit_Click" enabled="false">
</dx:ASPxButton>

然后,您就可以直接在您的处理程序中使用它:

代码语言:javascript
复制
function OnChkAgreeChanged(chkAgree) 
{
    if(!(btnSubmit === null || btnSubmit === undefined)) { btnSubmit.SetEnabed(chkAgree.checked); }
}

您会注意到,我喜欢检查它是否为空,因为如果您在代码隐藏中将显示设置为none或以其他方式禁用它,则很可能DevExpress魔法/巫术(选择一个)不会发出创建该实例对象的JS。

票数 1
EN

Stack Overflow用户

发布于 2013-07-08 13:23:32

chkAgree是一个对象,而不是字符串。您不必使用document.getElementById。试试这个。

代码语言:javascript
复制
<script type="text/javascript">

function OnChkAgreeChanged(chkAgree) {
    if (chkAgree.checked)
        document.getElementById("btnSubmit").disabled = null;
    else
        document.getElementById("btnSubmit").disabled = true;
}
</script>

另外,在onchange="javascript:OnChkAgreeChanged(this);"中,javascript:可能不是必需的。请查看ASP文档。

票数 1
EN

Stack Overflow用户

发布于 2013-07-08 14:04:25

JQuery解决方案

代码语言:javascript
复制
$(document).ready(function () {
    $('#chkAgree').click(function () {
        if (this.checked) {
            $("#btnSubmit").prop('disabled', false);
        }
        else {
            $("#btnSubmit").prop('disabled', true);
        }
    });
});

或者,如果你想使用JavaScript做同样的事情,可以使用mohkhan建议的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17519587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档