2016-11-07 4 views
0

Ich benutze CSJS im 'onChange' Event in einer ComboBox, und wenn ein Benutzer einen Wert auswählt, möchte ich eine EditBox und eine zweite ComboBox setzen (Der zweite ComboBox Wert ist einer der bereits in der Liste ist, I will es nur auswählen).Wie in XPages CSJS sollte ich einen ComboBox-Wert auswählen?

Um die EditBox in meinem 'onChange Event stelle ich verwendet:

XSP.getElementById("#{id:fldEditBox}").value = newEditBoxValue; 

aber einen Wert in der ComboBox Auswahl war viel schwieriger. Zuerst habe ich die EditBox Methode:

XSP.getElementById("#{id:fldComboBox2}").value = selectedComboBoxValue; 

Der Wert auf dem Bildschirm geändert und die ComboBox funktioniert normalerweise, wenn das Dokument gespeichert wurde es noch den alten Wert hatte.

Ich habe alle möglichen Dinge wie selectedIndex versucht, aber nichts hat funktioniert. Schließlich fand ich, dass dies:

document.getElementsByName("#{id:fldComboBox2}")[0].value = selectedComboBoxValue; 

die Veränderung gemeint war gerettet, war aber nicht auf dem Bildschirm sichtbar, so in meinem letzten Produktionscode ich beide verwendet und es funktioniert:

XSP.getElementById("#{id:fldComboBox2}").value = selectedComboBoxValue; 
document.getElementsByName("#{id:fldComboBox2}")[0].value = selectedComboBoxValue; 

Dies scheint hässlich Ich, es muss einen besseren Weg geben, dies in CSJS zu tun, weiß jemand?

Antwort

0

Die Art und Weise Sie den Wert eines ausgewählten Elements (Combobox) in Vanille JavaScript festgelegt ist durch die Elemente options Eigenschaft Schleife die Option, die Sie auswählen möchten zu finden:

var comboBox = document.getElementById("#{id:comboBox}"); 
for (var i=0; i < comboBox.options.length; i++) { 
    if (comboBox.options[i].value == "ValueYouWantSelected") { 
    comboBox.options.selectedIndex = i; 
    break; 
    } 
} 

Wenn Sie JQuery Sie zur Verfügung haben kann es elegant mehr:

var xpageID = "#{id:comboBox}".replace(/:/gi, "\\:"); 
var valueYouWantSelected = "someValue"; 
$('#' + xpageID + ' option[value="' + valueYouWantSelected + '"]').prop('selected', true); 

die xpageID Variable gibt es, weil Sie die entkommen ‚:‘ Zeichen, die XPages in den generierten IDs setzt es mit dem JQuery-Selektor-Engine zu arbeiten.

+0

Wenn ich das obige JavaScript-JavaScript benutze, benutze entweder document.getElementById oder XSP.getElementById alles was ich bekomme ist 'comboBox.options is undefined. –

+0

Gibt XSP/document.getElementById undefined zurück oder ist mit anderen Worten ComboBox Variable nicht definiert? Überprüfen Sie auch das gerenderte HTML - gibt es \t \t < option value = "Low" selected = "selected"> Low \t \t ' –

Verwandte Themen