Подтвердить нажатие одной кнопки перед другой с помощью Javascript - PullRequest
1 голос
/ 03 сентября 2010

Это в ASP.NET. Мы используем внешний интерфейс ExtJS и имеем собственные элементы управления VB.NET для создания всех форм Ext Forms и прочего. Тем не менее, я надеюсь, что это можно сделать простым 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, но она пустая, и вы можете видеть, что она также связана с формой. Я пытался дурачиться с этим, но я мог собрать только то, что попросило бы меня проверять каждый раз, когда я нажимал Сохранить, и он не знал, проверял ли я уже или нет.

Любая помощь? Спасибо заранее.

-Скотт

Ответы [ 2 ]

0 голосов
/ 03 сентября 2010

Э-э, это должно работать, если я вас правильно понял.

  1. В коде, который обрабатывает результат connection test, установите флаг, который указывает, что соединение было проверено.
  2. В обработчике кнопки Save проверьте этот флаг и, если он не установлен, отобразите какое-либо сообщение вместо фактического выполнения операции сохранения.

Ваш флаг можетбыть глобальной переменной, которая изначально установлена ​​на false, таким образом, пользователь должен будет запускать тест при каждом посещении страницы.

Что касается переопределения или перехвата обработчика кнопок «Сохранить» ...э-э ... думаю, вам придется расширить VB для этого.

0 голосов
/ 03 сентября 2010

Почему бы просто не скрыть кнопку сохранения, пока не будет нажата пробная связь и соединение не заработает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...