カレンダーフィールドに関連付けられているぼかしイベントをトリガーするのに助けが必要です。
トリガーしようとしているイベントが/media/system/calendar.jsの1003行目あたりに追加されています
JoomlaCalendar.prototype._bindEvents = function () {
var self = this;
this.inputField.addEventListener('blur', function(event) {
var calObj = JoomlaCalendar.getCalObject(this)._joomlaCalendar;
イベントが関連付けられているフィールドは、私のテストの[公開の開始]フィールドです
<input type="text" id="jform_publish_up" name="jform[publish_up]" value="2012-01-04" size="22" class="inputbox" data-alt-value="2012-01-04" autocomplete="off">
私がぼかしイベントをトリガーしようとしているJSの私のビット。
function addDate(target_field)
{
document.getElementById(target_field).value = currentDate();
document.getElementById(target_field).blur();
}
最初の行は現在の日付をフィールドに追加し、他のフィールドタイプでは正常に機能し、カレンダーフィールドにカーソルを置いて、試行する前のある時点で(これが通常ぼかしをトリガーする)ままにしておくと、カレンダーフィールドで機能しますフォームを送信します。
上記のぼかしイベントで実行する必要がある数行のコードまで追跡して、フィールドの新しい値を保存し、以前の値にリセットしないようにしました。
2行目は、関数をトリガーしようとしているところで、何も影響がないと思われる最新のものだけがあります。
そして、完全を期すために、公開開始フィールドに日付を追加するプロセスを開始する私の別のテストフィールドを示します。
<input type="text" name="jform[note]" id="jform_note" value="3432" class="inputbox" size="40" onchange="addDate('jform_publish_up')" maxlength="255" aria-invalid="false">
これは、先週のこの質問の続きです 別のフィールドが変更されたときにのみフィールドを更新する方法 。日付を保存できれば、それを閉じることができます。
17/11更新-これは、日付の値がtarget_fieldに追加された後に実行する必要があると私が思うコードです。 /media/system/js/calendar.js約1013行目。
if (calObj) {
if (calObj.inputField.value) {
if (typeof calObj.params.dateClicked === 'undefined') {
calObj.inputField.setAttribute('data-local-value', calObj.inputField.value);
Data-local-valueが設定されていない場合、これはカーソルがフィールドを離れるときに発生し、送信時に実行されるcalendar.jsの他の処理はフィールドを元の値に戻します。これは、ほとんどのJoomla日付フィールドで確認できます。フィールドのイベントを検査すると、3番目のエントリであるcalendar.jsの下にあるこのコードで確認できます。
時々、あなたは木の森を見ることができません。
私のJSは今このように見えます
function addDate(target_field)
{
document.getElementById(target_field).value = currentDate();
document.getElementById(target_field).focus();
document.getElementById(target_field).blur();
}
そしてそれは動作します!!!