如何使用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;
//});
}, '');
我真的要创建一个新方法,不能使用遥控器。
答案 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