【发布时间】:2011-11-03 12:37:29
【问题描述】:
我有一个正在使用 Jquery's Validation Plugin 进行验证的表单,我需要一种方法来通过 Ajax 在同一个字段上进行至少 2 次验证...
示例:我有一个名为 Login 的字段,它接受用户名或电子邮件,我需要验证它是数据库中的现有电子邮件还是数据库中的现有用户名,返回不同的消息并执行 2不同的 URL 来进行这些验证。
是否可以调用 2 个具有不同消息和 URL 的不同远程方法,或者我应该添加 2 个基于 AJAX 同步调用的新方法?
编辑
好吧,也许我应该说一下我为什么要调用2个不同的远程方法或创建2个AJAX同步调用的原因:
问题是我正在使用 Zend,我正在做一个可以验证服务器端(通过 PHP)和客户端(通过 Jquery Validate,由扩展自Zend 的原始验证器)。
示例
class Esytek_Form_JqueryValidator_NotEmpty extends Zend_Validate_NotEmpty implements Esytek_Form_JqueryValidator_Interface {
public function elementSetOptions(Zend_Form_Element $element){
$element->setRequired(true);
}
public function getJqueryCode(){
return 'required: true,';
}
public function getJqueryMessage($mensagem){
foreach ($this->_messageVariables as $ident => $property) {
$mensagem = str_replace("%$ident%", (string) $this->$property, $mensagem);
}
return 'required: "<br>'.$mensagem.'",';
}
public function getNewJqueryFunction(){
return null;
}
...
}
Esytek_Form_JqueryValidator_Interface
interface Esytek_Form_JqueryValidator_Interface extends Zend_Validate_Interface{
public function elementSetOptions(Zend_Form_Element $element);
public function getJqueryCode();
public function getJqueryMessage($mensagem);
public function getNewJqueryFunction();
}
还有另一个类太大了,但简而言之,它所做的只是调用每个 Jquery Validator 的方法,将所有 Jquery 代码聚合到一个字符串中,然后在表单中,我们应该调用一个方法编写运行验证的 jquery 代码。
在这种情况下,我想做一个类,它可以在一个字段中生成多种类型的 ajax 验证,以支持输入字段的 Ajax 验证中可能发生的所有可能情况......换句话说,我需要类似的东西:
public function getNewJqueryFunction(){
return array ('AjaxValidation_'.$count=>'$.validator.addMethod("tel_format"+'.$count.',
function(value,element) {
//Ajax call of URL
}," ");'
);
}
或类似 Esytek_Form_JqueryValidator_NotEmpty 的东西可以在一个字段中实现多个 remote 方法,因此我可以在任何 Ajax 调用案例中使用该 JqueryValidator。
这样,我的问题是“什么是最好的方法,我怎样才能在 jquery 的代码中做到这一点?”
【问题讨论】:
标签: validation jquery jquery-validate