jquery を使用してクライアント側で web2py バリデーターとカスタマイズ バリデーターを使用したい! それらを使用する方法?
1 に答える
web2py バリデーターはサーバー上でのみ動作します。フォームが送信されると、web2py はサーバー上で検証を行い、エラーがあれば、表示されるエラー メッセージとともにフォームを返します。クライアント側の検証も個別に行うことができますが、それはweb2pyのサーバー側の検証とは無関係です。
更新: Ajax 経由でサーバーに値を送信し、バリデーターを使用して値を確認する場合は、バリデーターを直接呼び出すことができます。例えば:
value, error = IS_EMAIL()('someone@example.com')
すべてのバリデーターは値を取り、呼び出されるとタプルを返します。最初の要素は送信された値 (またはバリデーターに応じてその変換) であり、2 番目の要素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コンポーネント内に配置することができます。この場合、フォーム送信と検証全体が Ajax を介して自動的に (単一の Ajax リクエストで) 処理されます。
本当にクライアント側の検証を行いたい場合は、クライアント側の検証ライブラリを使用することをお勧めします。