我有一套表单验证规则,是我用jquery validator插件编写的。因为我必须在服务器端重复相同的验证,所以我认为不必在PHP中重写规则会更好。如果规则是简单的field=>rulename=>value,我可以将它们存储为JSON,并将它们解码为PHP数组。不幸的是,一些规则依赖于其他字段或具有计算值。
有没有一种通用的方法将field=>rulename=>value=function{}从javascript/jquery转换成PHP?或者,有没有办法在服务器端运行jquery,然后将结果传递给PHP?
以下是一些规则的示例:
rules: {
title: {required:true, minlength:5},
description: {required:true, minlength:5},
event_type_id: "required",
ev_start: { dateCan: true, required: true},
ev_end:{ dateCan: true,
minDate: "input[name='ev_start']"
},
ev_starttime:{
required:
function(element){
return $("input[name='allday']:unchecked")
},
time: true,
maxTime: {
depends: function(element) {
return $("input[name='ev_endtime']:filled")
&& $("input[name='ev_start']").valid()
&& $("input[name='ev_end']").valid()
&& $("input[name='ev_start']").val()==$("input[name='ev_end']").val()
},
param: "input[name='ev_endtime']"
}
},
//etc...
}发布于 2010-02-11 22:15:53
我认为你走在正确的道路上,但我不认为你会发现它像你想象的那么容易。我不知道有没有预建的函数可以为这个特定的目的准确地解析和改造数据集。
如果我要这样做,我会将我的验证集组成一个多维关联数组,该数组用PHP保存必要的信息。
在此之后,您将不得不决定如何与JavaScript对话。如果在页面中以内联方式加载JS,我只需使用PHP循环遍历PHP数组,并根据需要构造JS规则。如果您使用的是外部函数调用,那么JSON对数组进行编码,并将其传递给转换函数,该函数将解析JSON数组并将其重新格式化为您的JQuery所需的格式。
编辑以澄清:
您可以从另一个方向将JS传递给PHP,但是按照我建议的方式,您可以轻松地换出其他JS或JQuery库,只需更换您的转换器即可。从JS到PHP,如果您决定更改JS验证器,则必须同时更改两端。如果你计划做多个网站或多个开发人员的编码,最好只学习一个通用的PHP数组配置,并且只为JS编写翻译器。
发布于 2010-02-11 22:43:40
我建议做相反的事情:将一些基于PHP的验证函数转换为Javascript函数。自动转换的函数不会像手工编码的函数那样灵活,因此也不会像手工编码的函数那样通用或强大,而您真的希望最好的功能在服务器端。如果你塞进一些PHP->JS验证,最糟糕的情况是,用户在被告知他们的电子邮件地址错误之前,会得到一个服务器的往返行程。
发布于 2010-02-11 23:03:27
我认为你正在尝试做的事情(javascript到php代码的转换)并不是非常系统化的,我怀疑你会找到现成的解决方案。
这种方法怎么样:
为表单中的字段创建一些配置,包括validation.
验证表单输入
https://stackoverflow.com/questions/2244691
复制相似问题