ajax的自定义jQuery Validate方法

时间:2015-09-02 22:49:45

标签: jquery ajax jquery-validate

如何使用ajax为jQuery Validate插件创建自定义方法? 我确实尝试了下一种方法,但验证器每次都返回无效。

    jQuery.validator.addMethod('customValidator', function (value, element) {
        $.ajax({
            url: '/ajax/validator/',
            type: 'POST',
            async: false,
            data: {field: value},
            dataType: 'json',
            success: function(result) {
                return result.data.valid;
            }
        });
        //.fail(function() {
        //    return false;
        //});
    }, '');

我真的要创建一个新方法,不能使用遥控器。

1 个答案:

答案 0 :(得分:1)

使用library(dplyr) # example dataset (picking useful columns) dt <- data.frame(mtcars) %>% select(drat, mpg, disp, hp, wt, am) # specify which columns we want as y (dependent) and x (independent) ynames <- c("drat","mpg") xnames <- c("disp","hp","wt") # get unique values of the grouping variable am groupvalues = unique(dt$am) expand.grid(ynames,xnames,groupvalues) %>% data.frame() %>% select(y=Var1, x=Var2, group=Var3) %>% mutate(formula = paste0(y," ~ B0*(",x,"^B1)*exp(B2*",x,")")) %>% group_by(y,x,group,formula) %>% do({ m1 <- nls( .$formula, data=dt[dt$am==.$group,], start=c(B0 = 45, B1 = 0.2, B2 = 0.0007)) RSS <- sum(residuals(m1)^2) TSS <- sum((dt[dt$am==.$group,][,.$y]- mean(dt[dt$am==.$group,][,.$y]))^2) data.frame(RSS,TSS) }) # y x group formula RSS TSS # 1 drat disp 0 drat ~ B0*(disp^B1)*exp(B2*disp) 1.3090406 2.770242 # 2 drat disp 1 drat ~ B0*(disp^B1)*exp(B2*disp) 1.1155372 1.590400 # 3 drat hp 0 drat ~ B0*(hp^B1)*exp(B2*hp) 2.1707337 2.770242 # 4 drat hp 1 drat ~ B0*(hp^B1)*exp(B2*hp) 0.8342527 1.590400 # 5 drat wt 0 drat ~ B0*(wt^B1)*exp(B2*wt) 2.2100162 2.770242 # 6 drat wt 1 drat ~ B0*(wt^B1)*exp(B2*wt) 1.1885811 1.590400 # 7 mpg disp 0 mpg ~ B0*(disp^B1)*exp(B2*disp) 98.4815286 264.587368 # 8 mpg disp 1 mpg ~ B0*(disp^B1)*exp(B2*disp) 46.8674036 456.309231 # 9 mpg hp 0 mpg ~ B0*(hp^B1)*exp(B2*hp) 74.9295161 264.587368 # 10 mpg hp 1 mpg ~ B0*(hp^B1)*exp(B2*hp) 112.5548955 456.309231 # 11 mpg wt 0 mpg ~ B0*(wt^B1)*exp(B2*wt) 104.2894519 264.587368 # 12 mpg wt 1 mpg ~ B0*(wt^B1)*exp(B2*wt) 71.1402536 456.309231 方法无法对.ajax()做任何事情,因为remote只是remote的包装,不多与你的不同。 .ajax()采用与remote完全相同的选项,因为它是内部使用的jQuery方法。在这种情况下,为.ajax()创建自定义方法毫无意义。

您的代码......

.ajax()

使用jQuery.validator.addMethod('customValidator', function (value, element) { $.ajax({ url: '/ajax/validator/', type: 'POST', async: false, data: {field: value}, dataType: 'json', success: function(result) { return result.data.valid; } }); //.fail(function() { // return false; //}); }, 'Invalid national id'); ,它完全相同,只需要更少的选项,因为它们已经是默认选项。

remote

文档:http://jqueryvalidation.org/remote-method/