Ich muss den Wert eines Feldes aktualisieren, wenn sich der Wert eines anderen ändert. Das Feld, das ich aktualisieren möchte, enthält einen Zeitstempel und ein Feld, dessen Wert sich ändern kann, enthält ein Datum (JJJJ-MM-TT). Die Änderung erfolgt über einen Kalender-Selektor, der wahrscheinlich der Grund ist, warum die Ereignisse onchange
und oninput
die Funktion nicht aufrufen können.Aktualisiere Eingangswert bei Änderung/Eingabe eines anderen mit Kalender-Selektor
Hier ist mein Code:
<input required class="short" type="text" id="startdate" name="startdate" value="<?php echo (isset($startdate) ? $startdate : "") ?>" oninput="updateTimestamp();" />
<input required class="short" type="text" id="startdate_u" name="startdate_u" value="<?php echo (isset($startdate_u) ? $startdate_u : "") ?>" />
<a href="#" onclick="cal.select(document.forms['project'].startdate,'anchor','yyyy-MM-dd'); return false;" name="anchor" id="anchor"><img src="images/calendar_icon.png" /></a>
<script>
var cal = new CalendarPopup();
function popup(mylink, windowname) {
if (! window.focus)return true;
var href;
if (typeof(mylink) == 'string')
href=mylink;
else
href=mylink.href;
window.open(href, windowname, 'width=500,height=300,scrollbars=yes,resizable=yes');
return false;
}
function updateTimestamp() {
var startDate = document.getElementById("startdate");
var newTimestamp = Math.round(new Date(startDate.value).getTime()/1000);
document.getElementById("startdate_u").value = newTimestamp.toString();
}
</script>
Hier ist ein Link auf den Kalender-Code: http://www.mattkruse.com/javascript/calendarpopup/source.html
ich nicht JQuery verwenden werde. Ihr Rat wird sehr geschätzt :) Die gesamte Website ist nach HTML5-Standards geschrieben - ich lese, dass oninput
sollte dann tun, aber es tut es nicht. Getestet sowohl in Chrome als auch in IE 11.
Sie erhalten nicht das '.value' für' startDate' und in Ihrem 'Math.round (neues Datum (startdatum)' hat die Variable keinen Großbuchstaben ** D **. Versuchen Sie 'Math. Runde (neues Datum (startDate.value) .getTime()/1000); ' – NewToJS
Sie haben Recht. Ich tippte gerade diese, die die Typos erklärt. Früher versuchte ich beide mit' .value' und ohne. Nicht einmal ein einfaches ' alert() 'wird ausgelöst – cheeseus
Ich habe es gerade mit' Math.round (neues Date (startDate.value) .getTime()/1000) versucht; 'too - nothing.Ich denke, das Problem ist, dass das' oninput'-Event nicht funktioniert Feuer, weil ich das Datum mit dem Kalenderwähler ändere, aber keine Idee, wie man das repariert. – cheeseus