0

我的页面上有一个包含三个步骤的 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。所以我创建了一个名为的 divdivLoader和一个 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 属性,这也是死路一条。

任何人都可以向我解释我做错了什么还是有另一种方法可以防止用户点击按钮两次?

4

1 回答 1

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功能的需求。

于 2012-04-04T08:24:08.870 回答