EnterKeyPressをJSFのSubmitのように動作させる方法。InputBoxで動作します。ただし、inputSecretボックスは使用しません
6 に答える
私はこれまでこの問題を見たことがありません。この動作がブラウザ固有である可能性はほとんどありません。さまざまな種類のブラウザで試して、一方と他方を除外してください(IE6 / 7/8、FF、Safari、Chromeなど)。これは、Enterキーを誤って抑制する(貧弱な)Javascriptキーイベントリスナー(たとえば、入力された文字をチェックするJSパスワードバリデーター)が原因である可能性が高くなります。
それでも無駄な場合は、以下onkeypress
をh:form
:に追加してください。
<h:form onkeypress="if (event.keyCode == 13) this.submit();">
ただし、textareasを考慮する必要があります。それらがある場合は、textareasに期待される要素にすべてのonkeypress
イベントを自分でコピーする必要があります。h:inputXXX
任意のフォームで送信する代わりに ENTER キーを押したい場合は、ここで行う必要があるのは、af:form タグに defaultcommand 属性を追加し、送信ボタンの ID を値として指定することです。このサンプル コード スニペットは次のとおりです。
<af:form id="f1" defaultCommand="cb1">
<af:outputText value="User Name" id="usename"/>
<af:inputText value="#{BackingBean.userName}" id="uname" />
<af:outputText value="Password" id="pword"/>
<af:inputText value="#{BackingBean.password}" id="paword" secret="true"/>
<af:commandButton text="Submit" action="#{BackingBean.method}" id="cb1" />
</af:form>
ComputerPilotの回答から、入力要素が1つしかない場合、親フォームを送信できないIEのバグであることがわかりました。この問題を克服するために、属性style="display:none"
を持つ入力ボックスをもう1つ追加しましたが、正常に機能しました。
これで私の頭に浮かぶ古い仕様があります。入力フィールドが1 つしかないフォームの場合、 enter-key での送信の動作は Internet Explorer の一部のバージョンでは機能しません。最も簡単な解決策は、複数の入力フィールドがあることを確認することです。
この問題の他の理由は次のとおりです...
- タイプ送信の入力がない
- 送信タイプの入力があるが、ページに表示されていない (非表示またはページ外に配置されている)
この動作は、このブラウザに固有のものです。
MS バグ レポート: connect.microsoft.com: 送信ボタンの値がフォーム送信で投稿されない
追加のinputBoxを配置し、javascriptを使用して非表示にすることで機能させました。他に何か提案があれば教えてください 正しい方向に向けてくれた baluC に感謝します ジェリー
jsf 2 でテスト済み。
<h:commandButton id="hidden" style="visibility: hidden;" action="#{mybean.myaction()}" />
あなたの形で