Eu tenho uma situação diferente, onde os valores da lista suspensa já estão codificados. Existem apenas 12 distritos, portanto o controle de UI do jQuery Autocomplete não é preenchido por código.
A solução é muito mais fácil. Porque eu tive que percorrer outros postos onde presumia-se que o controle estava sendo carregado dinamicamente, não encontrando o que eu precisava e então finalmente descobri.
Então, onde você tem HTML como abaixo, a configuração do índice selecionado é definida assim, observe a parte -input, que é além do id suspenso:
$('#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>
Outra coisa que descobrimos sobre o controle Autocomplete é como desabilitá-lo / esvaziá-lo adequadamente. Temos 3 controles trabalhando juntos, 2 deles mutuamente exclusivos:
spnDDL.combobox({
select: function (event, ui) {
var spnVal = spnDDL.val();
$('#project-locationSearch-pid-input').val('');
$('#project-locationSearch-pid-input').prop('disabled', true);
pidDDL.empty();
}
});
spnDDL.siblings('label').tooltip();
pidDDL.combobox({
select: function (event, ui) {
var pidVal = pidDDL.val();
$('#project-locationSearch-spn-input').val('');
$('#project-locationSearch-spn-input').prop('disabled', true);
spnDDL.empty();
}
});
Parte disso está além do escopo do post e não sei onde colocá-lo exatamente. Como isso é muito útil e demorou um pouco para ser descoberto, está sendo compartilhado.
E também ... para habilitar um controle como este, é (desabilitado, falso) e NÃO (habilitado, verdadeiro) - isso também demorou um pouco para descobrir. :)
A única outra coisa a se observar, além da postagem, é:
$('#project-locationSearch-dist').combobox({
select: function (event, ui) {
$('#project-locationSearch-pid-input').prop('disabled', false);
$('#project-locationSearch-spn-input').prop('disabled', false);
pidDDL.empty();
spnDDL.empty();
GetSPNsByDistrict(districtDDL.val());
GetPIDsByDistrict(districtDDL.val());
}
});
Todos compartilhados porque demorava muito para aprender essas coisas na hora. Espero que isso seja útil.