Javascript 禁用dx ASPX按钮

Javascript 禁用dx ASPX按钮,javascript,asp.net,Javascript,Asp.net,我试图根据复选框是否被选中来设置按钮的启用/禁用。下面是我的javascript和asp代码,它不起作用。我不确定是否根本没有调用该函数,或者禁用按钮的方式有问题 <script type="text/javascript"> function OnChkAgreeChanged(chkAgree) { if (document.getElementById"chkAgree").checked) document.getElementById("btnSu

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

<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>

功能更改(chkAgree){
if(document.getElementById“chkAgree”).选中)
document.getElementById(“btnSubmit”).SetEnabled(true);
其他的
document.getElementById(“btnSubmit”).SetEnabled(false);
}

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

<script type="text/javascript">

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

功能更改(chkAgree){
如果(勾选chkAgree)
document.getElementById(“btnSubmit”).disabled=null;
其他的
document.getElementById(“btnSubmit”).disabled=true;
}

此外,在
onchange=“javascript:onchkagrechanged(this);”
javascript:中可能不需要。请查看ASP文档。

JQuery解决方案

$(document).ready(function () {
    $('#chkAgree').click(function () {
        if (this.checked) {
            $("#btnSubmit").prop('disabled', false);
        }
        else {
            $("#btnSubmit").prop('disabled', true);
        }
    });
});

或者,如果您想使用JavaScript执行相同的操作,可以使用mohkhan建议的解决方案。

为此目的使用ClientInstanceNameClientEnabled(未启用)属性:

function OnChkAgreeChanged(chkAgree) {
    var checked = chkAgree.checked;
    btnSubmit.SetEnabled(checked);
}
</script>


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

<dx:ASPxButton ... ClientInstanceName="btnSubmit" ClientEnabled="False">
</dx:ASPxButton>
函数已更改(chkAgree){
var checked=CHKAGRE.checked;
btnSubmit.SetEnabled(选中);
}

DevExpress为每个控件创建一个客户端实例对象。在这种情况下,它将为btnSubmit创建一个。由于您尚未向btnSubmit提供ClientInstanceName,因此可以按如下方式访问它:

window.aspxGetControlCollection().elements['<%= btnSubmit.ClientID %>'];

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

我认为您应该使用disabled属性
document.getElementById(“btnSubmit”).disabled=true我试过了,但仍然没有成功。我正在尝试禁用“btnSubmit”,而不是“chkAgree”。但我尝试了这段代码来测试禁用“chkAgree”是否有效,但仍然没有成功。谢谢,仍然不起作用:(不知道如何检查是否调用了该函数您是否删除了
javascript:
并进行了检查?是的,我进行了检查。当我在运行后检查文档时,复选框中没有
onchange
。很抱歉,为复选框添加
onclick
。谢谢,但这也不起作用。我猜ch有问题eckbox定义我已经对你的答案投了赞成票!所以,可能有两个反对票,不是我!!
function OnChkAgreeChanged(chkAgree) 
{
    btnSubmit = window.aspxGetControlCollection().elements['<%= btnSubmit.ClientID %>'];
    if(!(btnSubmit === null || btnSubmit === undefined)) { btnSubmit.SetEnabed(chkAgree.checked); }
}
<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>
function OnChkAgreeChanged(chkAgree) 
{
    if(!(btnSubmit === null || btnSubmit === undefined)) { btnSubmit.SetEnabed(chkAgree.checked); }
}