Ich habe eine andere Situation, in der die Dropdown-Listenwerte bereits fest codiert sind. Es gibt nur 12 Distrikte, sodass das Steuerelement für die automatische Vervollständigung der jQuery-Benutzeroberfläche nicht mit Code gefüllt ist.
Die Lösung ist viel einfacher. Weil ich durch andere Posts waten musste, in denen angenommen wurde, dass das Steuerelement dynamisch geladen wurde, nicht fand, was ich brauchte, und es schließlich herausfand.
Wenn Sie also HTML wie folgt haben, wird das Festlegen des ausgewählten Index wie folgt festgelegt. Beachten Sie den Teil -input, der zusätzlich zur Dropdown-ID angezeigt wird:
$('#project-locationSearch-dist-input').val('1');
<label id="lblDistDDL" for="project-locationSearch-input-dist" title="Select a district to populate SPNs and PIDs or enter a known SPN or PID." class="control-label">District</label>
<select id="project-locationSearch-dist" data-tabindex="1">
<option id="optDistrictOne" value="01">1</option>
<option id="optDistrictTwo" value="02">2</option>
<option id="optDistrictThree" value="03">3</option>
<option id="optDistrictFour" value="04">4</option>
<option id="optDistrictFive" value="05">5</option>
<option id="optDistrictSix" value="06">6</option>
<option id="optDistrictSeven" value="07">7</option>
<option id="optDistrictEight" value="08">8</option>
<option id="optDistrictNine" value="09">9</option>
<option id="optDistrictTen" value="10">10</option>
<option id="optDistrictEleven" value="11">11</option>
<option id="optDistrictTwelve" value="12">12</option>
</select>
Etwas anderes, das über das Autocomplete-Steuerelement herausgefunden wurde, ist das ordnungsgemäße Deaktivieren / Leeren. Wir haben 3 Steuerelemente, von denen sich 2 gegenseitig ausschließen:
//SPN
spnDDL.combobox({
select: function (event, ui) {
var spnVal = spnDDL.val();
//fire search event
$('#project-locationSearch-pid-input').val('');
$('#project-locationSearch-pid-input').prop('disabled', true);
pidDDL.empty(); //empty the pid list
}
});
//get the labels so we have their tool tips to hand.
//this way we don't set id values on each label
spnDDL.siblings('label').tooltip();
//PID
pidDDL.combobox({
select: function (event, ui) {
var pidVal = pidDDL.val();
//fire search event
$('#project-locationSearch-spn-input').val('');
$('#project-locationSearch-spn-input').prop('disabled', true);
spnDDL.empty(); //empty the spn list
}
});
Einiges davon geht über den Rahmen des Beitrags hinaus und ich weiß nicht, wo ich es genau platzieren soll. Da dies sehr hilfreich ist und einige Zeit in Anspruch genommen hat, wird es geteilt.
Und auch ... um ein Steuerelement wie dieses zu aktivieren, ist es (deaktiviert, falsch) und NICHT (aktiviert, wahr) - das hat auch ein bisschen Zeit gekostet, um es herauszufinden. :) :)
Das einzige andere, was Sie zusätzlich zum Beitrag beachten sollten, ist:
/*
Note, when working with the jQuery Autocomplete UI control,
the xxx-input control is a text input created at the time a selection
from the drop down is picked. Thus, it's created at that point in time
and its value must be picked fresh. Can't be put into a var and re-used
like the drop down list part of the UI control. So you get spnDDL.empty()
where spnDDL is a var created like var spnDDL = $('#spnDDL); But you can't
do this with the input part of the control. Winded explanation, yes. That's how
I have to do my notes or 6 months from now I won't know what a short hand note means
at all. :)
*/
//district
$('#project-locationSearch-dist').combobox({
select: function (event, ui) {
//enable spn and pid drop downs
$('#project-locationSearch-pid-input').prop('disabled', false);
$('#project-locationSearch-spn-input').prop('disabled', false);
//clear them of old values
pidDDL.empty();
spnDDL.empty();
//get new values
GetSPNsByDistrict(districtDDL.val());
GetPIDsByDistrict(districtDDL.val());
}
});
Alle teilten sich, weil es zu lange dauerte, diese Dinge im laufenden Betrieb zu lernen. Hoffe das ist hilfreich.