[SFDC]Visualforceページでキャンセルボタン押下時のrequired=true項目の入力チェックを回避する

キャンセルボタンなんていうのは画面の入力状況がどうなってようと動いて欲しい。

前提

  • VFページをHTML5モードで実装していて、
  • apex:inputFieldタグを利用していて、
  • required=”true”を指定している時

現象

  • apex:inputFieldタグがレンダリングするソースのinputタグにHTML5のrequired属性が設定される
  • 結果、apex:inputField項目が未入力の状態で同form内にあるキャンセルボタンをクリックするとバリデーションが走りsubmitがキャンセルされ意図した動作にならない(元の画面に戻ってくれない)。
    2015-04-02_RequiredField

解決策

キャンセルボタンのsubmitボタンにHTML5のformnovalidate属性を設定する。
apex:commandButtonタグに設定する場合はhtml-formnovalidate=”formnovalidate”と書くことができる。

最初immediate=trueってちゃんと書いてるのになんでーとか四苦八苦してたけどよく見たらこれHTML5のバリデーション機能で引っかかってるだけじゃねーか!と気づいて落ち込んだ。


コメントを残す