[英]ASP.NET Custom Validator and AJAX
我使用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;
ComprobarNombre:[WebMethod()]
public static bool ComprobarNombre(string nombre)
{
/* SQLConnections... */
if(...)
return false;
else
return true;
}
问题是,每当我在TextBox中输入一个值时,就会启动AJAX函数。 我仅在单击表单按钮时才需要启动该功能。
1)取消自定义验证器2)单击按钮,调用客户端函数validateNombre()3)获取函数内部的文本框数据4)并将其作为数据参数传递
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.