SalesForceの日付型項目入力時にカレンダーが表示されない理由
通常、SalesForceで日付型の項目の定義を行った上で、
入力画面に「apex:inputField」
の入力項目を作ると、該当の入力項目にフォーカスしたときに入力用のカレンダーが表示されます。
これは、SalesForce側dでそのためのJavaScriptが生成されるためなのですが、今日は表示されませんでした。。
いくつか原因が考えられますが、大きく分けて、次の2つの原因が考えられると思います。
DatePicker が表示されない2つの理由
①日付型の項目が認識されていない
ひとつは、ここ「DatePicker missing on Rerender」に書いてあるように、日付型の項目が認識されていないため、隠し項目に定義することで表示が可能です。
②JavaScriptにエラーがある
上で、JavaScriptが自動で挿入されると書きましたが、 自分でJavaScriptの関数を定義している場合、そこにエラーがあると、きちんと生成されないのではないかと思います。
そのせいで、日付入力のためのカレンダーが表示できないことになっているのではないかと。
私の場合は、自分で定義していたJavaScript関数をエラー無く書き直したら、うまくDatePickerが表示されるようになりました。
特に、関数の中で、idを利用している場合は、注意が必要です。
window.onload = setFocus(); function setFocus() { document.getElementById("page:form:webAcsList").focus(); }
私は上記のようなソースを書いていたのですが、
「page:form:wbList:webAcsBrandOptionList」の部分が少しでも異なると表示されませんでした。
その場合は、SalesForceの画面をブラウザで開き、右クリックでソースを表示すると、id名を見ることができますので、それで確認して、正確なidを入れるようにした方がよいと思います。
コラム
salesforce関連の本って少ないですよね。また、Web上の情報は詳しいのですが、広大すぎて、調べようと思ったときに手元にリファレンス的な本があると助かります。以下は私のおすすめの本です。
Force.comのすべて ~設計・開発 実践マニュアル~ 初めてSalesForceでWebアプリを作ろうとしたとき、どこから手を付けていいか迷いました。そんなときに役立つ初心者向けの本です。細かいところに手が届くたぐいの本ではないですが、一通り、体系的に学べるので、役に立ちます。
改訂新版 Salesforceプログラミングバイブル すこし高い本ですが、豊富なソースが載っており、上の本を勉強して次の段階に進んだ技術者には役立。こんなことってSalesForceでできないの?と思ったときにも役に立ちます。
タグ:Salesforce