【发布时间】:2013-02-11 13:15:49
【问题描述】:
我想通过 jquery 在客户端使用 web2py 验证器和我的自定义验证器!如何使用它们?
【问题讨论】:
我想通过 jquery 在客户端使用 web2py 验证器和我的自定义验证器!如何使用它们?
【问题讨论】:
web2py 验证器仅在服务器上工作。提交表单时,web2py 会在服务器上进行验证,如果有任何错误,它会返回表单以及要显示的任何错误消息。您也可以单独进行客户端验证,但这将独立于 web2py 的服务器端验证。
更新:如果你想通过 Ajax 向服务器发送一个值并使用验证器来检查它,你可以直接调用验证器。例如:
value, error = IS_EMAIL()('someone@example.com')
所有验证器在调用时都接受一个值并返回一个元组,第一个元素是提交的值(或它的转换,取决于验证器),第二个元素是 None 如果验证通过或如果验证失败,则会出现错误消息。
通过 Ajax 接受值并返回错误消息或“OK”的服务器端验证操作可能如下所示:
def validate():
value, error = globals()[request.vars.validator]()(request.vars.value)
return error if error else 'OK'
然后您可以使用以下 URL 进行 Ajax 调用:
/myapp/mycontroller/validate?validator=IS_EMAIL&value=someone@example.com.
但是,发送 Ajax 请求来分别验证每个字段的效率并不高,尤其是对于不需要任何服务器端处理的验证器。如果您不希望表单提交重新加载页面,另一种选择是将表单放在 web2py component 中,在这种情况下,整个表单提交和验证将通过 Ajax 自动处理(在单个 Ajax 请求中) .
如果您真的想进行客户端验证,那么更好的选择是使用client-side validation library。
【讨论】: