【问题标题】:ASP.NET Custom Validator and AJAXASP.NET 自定义验证器和 AJAX
【发布时间】:2013-06-18 07:15:14
【问题描述】:

我用 AJAX 实现了一个自定义验证器,它工作正常:

已编辑。添加 ASPX 代码

<asp:DetailsView ID="DetailsView" runat="server" Height="50px" Width="25em" DataSourceID="SqlDataSource1" AutoGenerateRows="False" DefaultMode="Insert" CellPadding="4" ForeColor="#333333" GridLines="None" OnItemInserting="DetailsView_ItemInserting">
        <Fields>
            <asp:TemplateField HeaderText="Nombre *">
                <InsertItemTemplate>
                    <asp:TextBox ID="txtNombre" runat="server" Text='<%# Bind("nombre) %>'></asp:TextBox>
                    <asp:RequiredFieldValidator ID="requireNombre" runat="server" ControlToValidate="txtNombre" ErrorMessage="El campo 'Nombre' no puede estar vacío." ValidationGroup="DetailsGroup" Display="None"></asp:RequiredFieldValidator>
                    <asp:CustomValidator id="CustomValidator1" ControlToValidate="txtNombre" ClientValidationFunction="validateNombre" ValidationGroup="DetailsGroup" Display="none" ErrorMessage="Introduzca un nombre diferente." runat="server"/>
                </InsertItemTemplate>
            </asp:TemplateField>
        </Fields>
    </asp:DetailsView>

函数 AJAX:

        function validateNombre(src, args) {
        var isValid;
        $.ajax({
            type: "POST",
            url: "Nombre.aspx/ComprobarNombre",
            data: "{'nombre': '" + args.Value + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            async: false,
            success: function (msg) {
                isValid = msg.d;
            }
        });
        args.IsValid = isValid;

Comprobar 名称: [WebMethod()]

    public static bool ComprobarNombre(string nombre)
        {
            /* SQLConnections... */

            if(...)
                 return false;
            else
                 return true;
        }

问题是每次我在 TextBox 中输入值时都会启动 AJAX 功能。我需要仅在单击表单按钮时启动该功能。

【问题讨论】:

  • 请分享您的aspx代码,我想看看文本框和按钮是如何定义的。
  • 现在我分享我的aspx代码

标签: c# asp.net ajax web-services customvalidator


【解决方案1】:

1) 消除自定义验证器 2) 在按钮上单击调用客户端函数 validateNombre() 3) 获取函数内部的文本框数据 4) 并将其作为数据参数传入

【讨论】:

  • $("#button").click( function(e) { e.preventDefault(); $.ajax({ type: "POST", url: "Nombre.aspx/ComprobarNombre",数据:"{'nombre': '" + $('#button').val() + "'}",内容类型:"application/json; charset=utf-8",数据类型:"json",异步:错误,成功:函数 (msg) { isValid = msg.d; } }); } );
  • 哎呀..请尝试使用文本框的 id。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-31
  • 2017-05-03
  • 2011-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-06
相关资源
最近更新 更多