使用ASP.NET WebForms的jQuery Validator#remote

时间:2011-01-21 13:57:27

标签: jquery webforms

我正在尝试将jQuery Validator插件与WebForms一起使用。这是我的jQuery代码:

$("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()总是返回空,所以值总是被标记为false。我尝试将其包装在函数调用中,如下所示:

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 = {}内容)正在进行调用,但是传递空数据而不是文本框中的值。我一直试图在一天中的大部分时间里解决这个问题。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您可以像这样编写远程功能

   remote: function() {
      var value = $('#FromZip').val();
      var r = {
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify({ 'postalCodeToValidate': value }),
            type: 'POST',
            dataType: 'json',
            url: 'shipping companies.aspx/ValidatePostalCode',
            dataFilter: function(data) { return $.parseJSON(data).d; }
      };
      return r;
   }