Как добавить пользовательский Javascript на стороне клиента asp.net вызывает функцию проверки? - PullRequest
0 голосов
/ 29 марта 2011

У меня есть веб-сайт asp.net с несколькими элементами управления Validation:

<div class="form-row">
     <label>Email</label>
            <asp:TextBox ID="txtUserName1" runat="server" onchange="validate(this)">    </asp:TextBox>
            <asp:RequiredFieldValidator ID="reqUserName1" runat="server" ControlToValidate="txtUserName1"
                ErrorMessage="- The email address field is required" Text="*" CssClass="error_star" Width="10px" ValidationGroup="Register"></asp:RequiredFieldValidator>
            <asp:RegularExpressionValidator ID="RegularExpressionValidator2" CssClass="error_star" runat="server" ErrorMessage="- Invalid Email Address" Text="*"
                        ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ControlToValidate="txtUserName1"
                        ValidationGroup="Register"></asp:RegularExpressionValidator> 
        </div>

У меня есть кнопка для отправки формы

<asp:Button ID="cmdSubmit" runat="server" Text="Create Account" CssClass="small-button"
            ValidationGroup="Register" CausesValidation="true" OnClientClick="validateForm()" OnClick="cmdSubmit_Click" />

При первом обращении кКнопка запускается проверка на стороне клиента, и мой метод validateForm () не срабатывает.в последующие времена я нажимаю кнопку «Отправить», и моя пользовательская проверка работает нормально.

Как мне добавить пользовательский JavaScript для проверки на стороне клиента?

здесь 'javascript

function validateForm() {
        $("input[type=text], input[type=password]", "#registerForm").each(function () {
            validate(this)
        });
    }

    function validate(control) {
        // Change the colour of the border
        for (var i = 0; i < control.Validators.length; i++) {
            if (!control.Validators[i].isvalid) {
                control.style.border = "1px solid red"
                return;
            }
        }
        control.style.border = "1px solid #E1D7CE"

    }

Ответы [ 3 ]

1 голос
/ 29 марта 2011

Страница не проверялась, поэтому JavaScript работал, но он думал, что все элементы управления там, где они действительны, я добавил это

if (!Page_ClientValidate("Register")) {
            Page_ClientValidate("Register")
        }

для подтверждения страницы.

0 голосов
/ 30 марта 2011

1 - используйте CustomValidator, следовательно, вся ваша логика проверки будет находиться в вашем коде JavaScript, скажем, вы хотите проверить TextBox для числа> 12, код JavaScript будет выглядеть так:

     function Validate(src, eventargs)
        {
          var control = Document.GetElementByID(src);
          if(control.value > 12)
           eventargs.IsValid = true;

    else 
    eventargs.IsValid = false;


        }

2 - ИспользоватьCustomValidator's ClientValidationFunctionProperty, установленный в = "Validate" (функция JavaScript)

, когда вы пытаетесь выполнить любую обратную передачу, тогда оценивается коллекция Page.Validators, и поэтому ваш CustomValidator

0 голосов
/ 29 марта 2011

Вы можете использовать пользовательский валидатор

http://asp.net -tutorials.com / validation / custom-validator /

они работают так же, как и любой другой asp.netvalidators, примите, что вы можете написать функцию, которая обрабатывает проверку и устанавливает флаг IsValid.Это, в свою очередь, разрешит / предотвратит обратную передачу.

...