【问题标题】:Validate one button is clicked before another with Javascript使用 Javascript 验证在单击另一个按钮之前单击另一个按钮
【发布时间】:2010-09-03 13:23:28
【问题描述】:

这是在 ASP.NET 中。我们正在使用 ExtJS 前端,并且有我们自己的 VB.NET 控件来制作所有的 Ext 表单和东西。但是,我希望这可以用纯 JavaScript 完成。页面上已经有一些 Javascript 用于单击“测试连接”按钮并处理结果。

但是,我需要在屏幕上进行验证,以确保用户在保存屏幕之前测试连接。 (在点击保存按钮之前点击测试按钮)- 每次他们访问屏幕时。

这是页面的代码:

<%@ Page Language="VB" Inherits="Core.Web.EditBaseView" %>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script language="javascript" type="text/javascript">
        function testConnection() {

            Global.mask('Testing Connection...');
            KBBConnectorController.TestConnection(function(result) { testConnectionCallback(result) });
        }

        function testConnectionCallback(result) {
            Global.unmask();
            if (result.Data.Result) {
                Global.alert("Connection to KBB Successful.");
            }
            else {
                Global.alertError(result.Data.Messages[0].Text, result.Data.ExceptionId);
            }
        }

        function Validate() {

        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div style="display:none">
        <%  =Html.DropDownList("ddlMarketValues", TryCast(Model.MarketValues, SelectList))%>
    </div>
    <div>
        <%
            Using KBBForm As New WebControls.Forms.Form
                With KBBForm
                    .OnValidate = "Validate"
                    .ID = "KBB"
                    .ItemName = "connector"
                    With .Toolbar
                        .UseDefaultButtons = False
                        .AddButton(Forms.FormToolbar.ButtonType.Save)
                        .AddButton(Forms.FormToolbar.ButtonType.Cancel)
                        .AddButton("Test Connection", "testConnection", "icon-button-testconnection", , "Test connectione")
                    End With

                    With .CenterRegion
                        .Id = "centerRegion"
                        With .AddFieldSet("Activate Service")
                            .Id = "activate"
                            .LabelWidth = 0
                            Dim cb As New Forms.Control("IsActive", "", "", Model.IsActive, Forms.Control.ControlType.CheckBox)
                            cb.BoxLabel = "Activate Service"
                            .AddControl(cb)
                        End With

                        With .AddFieldSet("Connection Parameters")
                            .Id = "params"
                            .LabelWidth = 150
                            .AddControl(New Forms.Control("UserName", "", "User Name", Model.UserName, Forms.Control.ControlType.TextField))
                            .AddControl(New Forms.Control("Password", "", "Password", Model.Password, Forms.Control.ControlType.Password))
                            .AddControl(New Forms.Control("LoginUrl", "", "URL", Model.LoginUrl))
                            With .AddControl(New Forms.Control("ddlMarketValues", "", "Market Value", , Forms.Control.ControlType.ComboBox))
                                .Id = "ddlMarketValues"
                            End With
                        End With
                    End With
                    Response.Write(.ToString)
                End With
            End Using
            %>    
    </div>
    </form>
</body>
</html>

如您所见,我在其中放置了一个 OnValidate 函数,但它是空白的,您可以看到它也与表单相关联。我试着玩弄这个,但我只能把一些东西放在一起,每次点击保存时都会要求我测试,而且它不知道我是否已经测试过。

有什么帮助吗?提前谢谢。

-斯科特

【问题讨论】:

  • 您可以禁用第二个按钮,只有在成功测试后才能启用它。
  • 不能这样做,因为老板说它与其余代码不匹配。我们处理事情的方式=/

标签: javascript vb.net extjs webforms


【解决方案1】:

嗯,如果我理解正确的话,这应该可以工作。

  1. 在处理connection test 结果的代码中,设置一个标志,表明连接已经过测试。
  2. Save 按钮的处理程序中检查该标志,如果未设置,则显示某种消息,而不是实际执行保存操作。

您的标志可以是全局变量,最初设置为false,这样用户每次访问页面时都需要运行测试。

关于你将如何覆盖/拦截保存按钮处理程序......呃......你猜你必须为此扩展 VB 的东西。

【讨论】:

  • 我做了所有这些,并涵盖了您不太确定的部分。我没有设置标志,而是设置了一个隐藏控件。谢谢!
【解决方案2】:

为什么不隐藏保存按钮,直到按下测试连接并且连接正常?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多