Я получаю ошибку JavaScript (только в IE), и я не могу понять, почему. Я предполагал, что это была запятая или что-то, но я не могу ее найти. Я надеюсь, что я что-то пропустил, и, возможно, один из вас увидит, что я пропустил.Ошибка 'controltovalidate' в IE8
Мой контроль и валидатора:
<asp:TextBox runat="server" ID="txtName" MaxLength="100" CssClass="styled" Columns="50" />
<asp:CustomValidator runat="server" ID="cvName" ErrorMessage="Enter a valid contact name or email address" ControlToValidate="txtName" Display="None" ValidationGroup="PlatformContact" ClientValidationFunction="doesUserExist" />
<asp:ValidatorCalloutExtender ID="vceName" runat="server" TargetControlID="cvName" WarningIconImageUrl="~/img/icons/ic_asterisk.gif" CssClass="validatorStyled" PopupPosition="Right" CloseImageUrl="~/img/icons/ic_x_close_orange.png" />
<asp:RequiredFieldValidator runat="server" ID="valName" ErrorMessage="Enter a contact name or email address" ControlToValidate="txtName" Display="None" ValidationGroup="PlatformContact" />
<asp:ValidatorCalloutExtender ID="vceNameRequired" runat="server" TargetControlID="valName" WarningIconImageUrl="~/img/icons/ic_asterisk.gif" CssClass="validatorStyled" PopupPosition="Right" CloseImageUrl="~/img/icons/ic_x_close_orange.png" />
А вот JavaScript/JQuery Я использую:
<script language="javascript" type="text/javascript">
var userExists = true;
function doesUserExist(source, args) {
var txtName = $('#<%= txtName.ClientID %>').val();
$.ajaxSetup({ cache: false });
$.ajax({
type: "POST",
contentType: "application/json",
data: "{name:'" + txtName + "'}",
url: "ManageMyContacts.aspx/DoesUserExist",
dataType: "json",
success: function (result) {
userExists = result.d;
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
//Something bad happened,redirect to login page
window.location.href = '<%= ResolveUrl("~/Default.aspx") %>';
}
});
args.IsValid = userExists;
}
</script>
Любое понимание очень ценится.
EDIT: ошибка JavaScript
Сообщение: 'ControlToValidate' равно нулю или не является объектом
Вот пользователь WebMethod я для проверки имени пользователя (в код)
[WebMethod(EnableSession = true)]
public static bool DoesUserExist(string name)
{
ManageMyContactsService service = new ManageMyContactsService();
int index = name.IndexOf("[") + 1;
if (index > 0)
{
string email = name.Substring(index, name.Length - (index + 1));
return service.DoesUserExist(email);
}
else if (name.IndexOf("@") == -1)
return false;
else
return service.DoesUserExist(name);
}
Я заметил, что функция doesUserExist вызвана дважды по какой-либо причине, может кто-нибудь сказать, почему из этого кода?
Можете ли вы опубликовать ошибку javascript и примерно в какой строке это произойдет, если вы это нашли? – Rhumborl
Не связано, вероятно, но ваш код также не работает должным образом, потому что 'userExists'' undefined', когда 'args.IsValid = userExists' запускается, потому что ajax является асинхронным. Ваш код выглядит действительным, я подозреваю, что ошибка, которую вы получаете, связана либо с C#, либо с чем-то еще. –
@KevinB, возможно, это связано, не помню, как проверяет asp.net, но если это не правда или ложно, это может сработать. – Rhumborl