jsfで構築されたフォームでjQuery検証プラグインを使用してクライアント検証を行おうとしています。明らかな理由で、サーバーとブラウザー間の要求/応答のラウンドトリップの数を減らすために、基本的にクライアント検証が必要です。jsfの「h:commandlink」タグは、以下のコードを使用してJQueryフォームの検証で正常に機能するようになった「h:commandButton」のように、通常の送信ボタンとは異なります。
<script type = "text/javascript">
$(document).ready(function(){
$("#form").validate({
rules: {
"form:staffno": {
required: true
}
}
});
});
</script>
<h:body>
<h:form id="form">
<h:inputText id="staffno" value="#" required="true"/>
<h:commandButton id="save" value="SAVE" action="#"/> //renders a html submit button type
</h:form>
</body>
ページソースから、h:commandLinkが何らかのjavascript関数を使用していることに気付いたので、上記を微調整して、以下に示すのと同じ効果を得ようとしました。
<script type="text/javascript">
$(document).ready(function(){
$("#form").validate({
rules: {
"form:staffno": {
required: true
}
}
});
$("#form\\:save").click(function(){
if($("#form").valid()){
//cannot use regular $("#form").submitt()
// really can't figure what to use here
}
else{
return false;
}
});
});
</script>
微調整を行うと、JQuery検証プラグインの動作を取得できましたが、フィールドが空の場合でもフォームが送信されるため、しばらくの間しか実行できませんでした。2つのonclicksがjqueryで呼び出され、もう1つがjsfで呼び出されると思ったようなものですが、それを正しく行う方法がまだわかりません。このクライアント検証をJQueryとjsfh:commandLinkで正しく機能させるには助けが必要です。ありがとう