我使用的是jQuery validation plugin。它工作得很好,是一个令人印象深刻的工具。我得到的表单上的88个字段中有几个需要使用其他网站上的API。我已经发现我不能直接从javascript中做到这一点,因为它违反了同源策略。因此,它对我自己的网站进行$. AJAX 调用(然后通过curl调用API)。
jQuery验证插件允许您通过调用jQuery.validator.addMethod(name, method [, message ] )
来定义验证方法
名称是一个字符串,用于标识为配置中指定的特定字段调用的函数。方法是一个函数定义,返回布尔值和参数,参数由字段的当前值、字段的DOM元素和要传递给方法的参数组成。
因此,在我的验证方法中,我需要进行一个$ AJAX 调用,处理结果,并向调用者返回true或false。我不需要告诉调用者传递函数来调用valid或invalid,我必须向调用者返回一个布尔值。我已经阅读了this问题和其他类似问题的答案,据我所知,它们都涉及到用$. AJAX ()调用的结果触发对另一个函数的调用(无论是使用promises还是callback)--它们都不会将结果返回给$.ajax()的调用者,除非你传递async:false to $. AJAX ().我错过了什么吗?或者我应该告诉插件的维护者,他们为自定义验证函数定义了一个糟糕的接口:-)?
1条答案
按热度按时间ssgvzors1#
不需要为此定义自定义规则。“jQuery validation” 已经为这种场景内置了
remote method
。示例1:使电子邮件字段成为必填项,一封电子邮件,并执行远程请求以检查给定的地址是否已被占用。
示例2:将email字段设置为必填项,一封email,并发出远程请求以检查给定地址是否已被占用。另外,http方法设置为“post”,用户名与email地址一起发送。
上例中的
remote
方法就是您要查找的,remote
属性的值接受与jQuery的$.ajax()
方法相同的属性。在服务器上,可以返回
"true"
以指示验证通过,返回"false"
以指示验证失败,或者返回一个字符串以显示自定义错误消息。