Я пытаюсь использовать плагин jQuery Validator с WebForms. Вот мой код JQuery:jQuery Validator # remote с ASP.NET WebForms
$("input[id$=FromZip]").rules('add', {
required: true,
postalCode: true,
remote: {
url: "shipping companies.aspx/ValidatePostalCode",
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: 'json',
data: "{'postalCodeToValidate': '" + $("input[id$=FromZip]").val() + "'}",
dataFilter: function(data) { return (JSON.parse(data)).d; }
},
messages: {
required: '"From" zip code is required.',
postalCode: 'Invalid "From" zip code',
remote: 'The "From" zip code was not found in the database.'
}
});
Проблема с этим состоит в том, что val()
всегда возвращает пустой, так что значение всегда быть помечены как ложные. Я попытался окружив его в вызове функции, например, так:
remote: function() {
var r = {
url: "shipping companies.aspx/ValidatePostalCode",
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: 'json',
async: false,
data: "{'postalCodeToValidate': '" + $("input[id$=FromZip]").val() + "'}",
dataFilter: function(data) { return (JSON.parse(data)).d; }
}
}
За исключением теперь WebMethod не вызывается вообще никаких запросов Ajax не делается, в то время как раньше (без var r = {}
материала) вызов был быть но передавая пустые данные вместо значения из текстового поля. Я пытался понять это в течение большей части дня.
Любые предложения?
Так что я, кажется, решил его частично путем создания пользовательского метода вместо использования удаленного, но теперь это маркировки поле недействительным, даже если ответ я получаю назад с сервера: {"d": "true"}. Даже жесткое кодирование значения «True» в пользовательском методе по-прежнему помещает поле как недопустимое! –
Я смог исправить это, создав переменную, назначив эту переменную в обработчике метода успеха, а затем проверив значение вне вызова Ajax. Странно, и есть почти наверняка лучший способ справиться с этим, но он решен. –
Такая же проблема со мной, я изменил использование пользовательского метода вместо удаленного. Один улов для этого настраиваемого метода - вам может потребоваться установить айхакс-вызов async: false, иначе валидатор будет всегда показывать false. вот где я получил идею http://stackoverflow.com/questions/7966209/jquery-custom-validators-do-not-validate-on-keystroke – Zayar