だから私は、 jqueryの検証プラグインを使用してテキストエリアを検証する方法に関する別の質問で誰かを助けていました. 私が思いついた最善の解決策は、remote
メソッドを使用して ajax 経由で文字列を渡し、サーバー側のスクリプトに単語数を返すようにすることでした。
これは問題なく動作しますが、2 つの問題に遭遇してループに陥りました。1 つの問題ですが、2 つの側面があります。
要素がリモート応答を介して検証されたと見なされるためには、返されるデータ (json または xml) は基本的に次の形式である必要があります。
{"element-name" : true}
たとえばanswer1
、フォーム内のという名前の要素を検証する場合、次のようになりid=test
ます。
$("#test").validate({
rules: {
answer1: {
remote: {
url: "check_wordcount.php",
type: "post",
data: {
wordcount: 5
}
}
}
}
}
しかし、単語数が必要な代わりに、冒とく的な表現を使用していないこと、スペルミスがないこと、プロンプトでランダムに指定された 3 つのキーワードを使用していることなどを確認したい可能性があります。また、おそらく 4 つのテキスト領域があり、それぞれに独自のキーワードのセットですが、基本的には同じ検証が必要です。validate
テストに合格したと見なすには、応答データに以下remote
が含まれている必要があります (上記の例)。
{"answer1" : true}
言い換えれば、ブラウザー側のさらなるロジックのために役立つデータを返すだけではなく、その要素に固有である必要があり、満たす必要があるパラメーターが真であることを認識している必要があります。
2 番目の部分 (このシナリオのみ) では、要素の値 (この場合は最小単語数) 以外のパラメーターをサーバー スクリプトに渡すことができるため、これはそれほど悪くはありませんでした。
しかし、これはサーバー側スクリプトの再利用性を実際に制限します。複数のフォームがある場合、または同じ検証が必要な複数のテキスト領域を持つ 1 つのフォームしかない場合はどうすればよいでしょうか? オプションは次のいずれかのように感じます
を。渡される可能性のあるすべての潜在的なフォーム値を事前に登録し、
b. 最初の値が要素名/値のペアであると仮定します
c. または、それが要素名であるかどうかを完全に知らずに、配列キーを狂ったようにサニタイズしてから戻します。
私の他の唯一のアイデアは、「要素名」という別のパラメーターを渡して、それが POST 配列にあるかどうかを確認することです。これはまだ私をサニタイズする場所に残しています(もちろん、これは悪いことではありませんが、どれだけ多すぎるかはわかりません).
サーバー側スクリプトのブラインド情報を渡し、安全で一貫した結果を期待する簡単な方法はありますか?