在asp向导中禁用按钮onclick

时间:2012-04-04 08:10:26

标签: c# javascript asp.net aspwizard

我的页面上有一个asp向导,分三步。

<asp:Wizard ID="wizardBestellen" runat="server" ActiveStepIndex="0" DisplaySideBar="False" onfinishbuttonclick="wizard_NextButtonClick" onnextbuttonclick="wizard_NextButtonClick" onpreviousbuttonclick="wizard_PreviousButtonClick">
          <StartNavigationTemplate></StartNavigationTemplate>
          <StepNavigationTemplate></StepNavigationTemplate>
          <FinishNavigationTemplate></FinishNavigationTemplate>
          <WizardSteps>
            <asp:WizardStep runat="server" ID="step1" StepType="Start">
              <uc1:control ID="uc1" runat="server" />
            </asp:WizardStep>
            <asp:WizardStep runat="server"ID="step2" StepType="Step">
              <uc2:control ID="uc2" runat="server" />
            </asp:WizardStep>
            <asp:WizardStep ID="step3" runat="server" StepType="Finish">
              <uc3:control ID="uc3" runat="server" />
            </asp:WizardStep>
          </WizardSteps>
        </asp:Wizard>

现在每个控件都有一个下一个和上一个按钮,在点击后验证您的数据并发送到下一步。按钮都看起来像:

<asp:LinkButton ID="bntPrevious" runat="server" CommandName="MovePrevious" CssClass="buttonOrange" CausesValidation="false"><span>Previous</span></asp:LinkButton>
<asp:LinkButton ID="btnNext" runat="server" CommandName="MoveNext" CssClass="buttonOrange" CausesValidation="true"><span>Next</span></asp:LinkButton>

到目前为止一切都很完美.. 现在我想在点击它之后禁用按钮并显示带有加载程序图像的div。所以我创建了一个名为divLoader的div和一个javascript函数,它隐藏了按钮所在的div并用加载器显示div。

function ToggleDiv(divButton, divLabel)
{

        if (divButton.style.display == 'block')
        {
            divButton.style.display = 'none';
            divLabel.style.display = 'block';
        }
        else
        {
            divButton.style.display = 'block';
            divLabel.style.display = 'none';
        }
}

但我不能让这个工作。 ToggleDiv函数在另一种情况下工作得很好,所以这不是问题。 我试过从链接按钮中的OnClick属性调用该函数,但这给了我一个错误。我尝试了OnClientClick,但这不起作用,我也尝试在后面的代码中设置onclick属性,这也是一个死胡同。

有人可以向我解释我做错了什么,或者是否有其他方法阻止用户点击按钮两次?

1 个答案:

答案 0 :(得分:1)

听起来你没有让绑定工作。

我要做的第一件事是通过执行视图源来检查发出的控件ID。 .NET框架的某些实现会为这些控件ID添加额外的漏洞,因此无法保证它与表单中显示的相同。

接下来,我会尝试一些JavaScript后期绑定。如果您有一个JavaScript文件,请将其放在那里。如果没有创建一个或将JavaScript块添加到表单的底部(为首选项创建一个新文件)。

使用jQuery这样的JAvaScript程序可以轻松实现所有这些功能,但暂时可以假设您没有这样的程序。

添加一个窗口onload事件处理程序

window.onload = function(){
    //code to go here
}

现在添加按钮的点击装订:

window.onload = function(){
    document.getElementById("***YOUR BUTTON ID***").onclick = function(){
        ToggleDiv(this, document.getElementById("***YOUR LABEL ID***"));
    }
}

我说这对jQuery来说会更轻松一点,嗯,这是等效的实现:

$(document).ready(function(){
    $("#***YOUR BUTTON ID***").click(function(){
        $(this).toggle();
        $("#***YOUR LABEL ID***")).toggle();
    });
});

上述示例完全取消了您对ToggleDiv功能的需求。