it-swarm.com.de

JS: Wie man ein Unschärfeereignis mit meinem Code auslöst

Ich benötige Hilfe beim Auslösen eines Unschärfeereignisses, das an ein Kalenderfeld angehängt ist.

Das Ereignis, das ich auslösen möchte, wird in /media/system/calendar.js um Zeile 1003 hinzugefügt

JoomlaCalendar.prototype._bindEvents = function () {
    var self = this;
    this.inputField.addEventListener('blur', function(event) {
        var calObj = JoomlaCalendar.getCalObject(this)._joomlaCalendar;

Das Feld, an das das Ereignis angehängt ist, ist das Feld "Veröffentlichung starten" für meine Tests

<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">

Mein bisschen JS, wo ich versuche, das Unschärfeereignis auszulösen.

function addDate(target_field) 
{
    document.getElementById(target_field).value = currentDate();
    document.getElementById(target_field).blur();
}

Die erste Zeile fügt dem Feld das aktuelle Datum hinzu und funktioniert bei anderen Feldtypen einwandfrei. Sie funktioniert auch bei den Kalenderfeldern, vorausgesetzt, ich setze den Cursor in das Kalenderfeld und lasse (dies löst normalerweise die Unschärfe normalerweise aus), bevor ich es versuche um das Formular einzureichen.

Ich habe es auf einige Codezeilen zurückgeführt, die im obigen Unschärfeereignis ausgeführt werden müssen, damit mein neuer Wert für das Feld gespeichert und nicht auf den vorherigen Wert zurückgesetzt werden kann.

In der zweiten Zeile versuche ich, die Funktion auszulösen, und es gibt nur die neuesten Dinge, die keinen Einfluss zu haben scheinen.

Der Vollständigkeit halber ist hier mein anderes Testfeld, das den Prozess des Hinzufügens des Datums zum Startveröffentlichungsfeld beginnt.

<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">

Dies ist eine Folgefrage zu dieser Frage zu Beginn der Woche: So aktualisieren Sie ein Feld nur, wenn ein anderes Feld geändert wird , und wenn ich die Daten speichern kann, kann ich es schließen.

Update 17/11 - Dies ist der Code, den ich ausführen muss, nachdem mein Datumswert zum Zielfeld hinzugefügt wurde. /media/system/js/calendar.js unter Ca. Zeile 1013.

    if (calObj) {
        if (calObj.inputField.value) {
            if (typeof calObj.params.dateClicked === 'undefined') {
                calObj.inputField.setAttribute('data-local-value', calObj.inputField.value);

Ohne dass ein lokaler Datenwert festgelegt wird und dies geschieht, wenn der Cursor das Feld verlässt, wird das Feld durch eine andere Verarbeitung in calendar.js, die beim Senden ausgeführt wird, auf den ursprünglichen Wert zurückgesetzt. Sie können dies in jedem/den meisten Joomla-Datumsfeldern sehen. Wenn Sie das Ereignis auf das Feld untersuchen, können Sie diesen Code unter dem dritten Eintrag "calendar.js" eingeben

2
Irata

Manchmal kann man den Wald vor lauter Bäumen nicht sehen.

Mein JS sieht jetzt so aus

function addDate(target_field) 
{
    document.getElementById(target_field).value = currentDate();
    document.getElementById(target_field).focus();
    document.getElementById(target_field).blur();
}

und es funktioniert !!!

1
Irata