0

jquery を使用してクライアント側で web2py バリデーターとカスタマイズ バリデーターを使用したい! それらを使用する方法?

4

1 に答える 1

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 リクエストで) 処理されます。

本当にクライアント側の検証を行いたい場合は、クライアント側の検証ライブラリを使用することをお勧めします。

于 2013-02-26T13:55:28.600 に答える