Ich habe die folgende Jquery-Funktion:
$.post('GetSalesRepfromCustomer', {
data: selectedObj.value
}, function (result) {
alert(result[0]);
$('select[name^="salesrep"]').val(result[0]);
});
result[0]
ist ein Wert, den ich als selected
-Element in meiner Auswahlbox festlegen möchte .result[0]
entspricht Bruce jones
.
das Auswahlfeld wird mit einer Datenbankabfrage gefüllt, eines der gerenderten HTML-Dateien lautet jedoch:
<select id="salesrep" data-theme="a" data-mini="true" name="salesrep">
<option value=""> </option>
<option value="john smith">john smith</option>
<option value="Bruce Jones">Bruce Jones</option>
<option value="Adam Calitz">Adam Calitz</option>
<option>108</option>
</select>
$('select[name^="salesrep"]').val(result[0]);
füllt die ausgewählte Auswahlbox nicht auf. Ich habe auch $("#salesrep").val(result[0]);
ohne Glück versucht.
Jede Hilfe geschätzt.
was ich also möchte, ist die ausgewählte/hervorgehobene Option in der Dropdown-Liste "salesrep", um Bruce Jones zu sein.
HTML zu sein:
<select id="salesrep" data-theme="a" data-mini="true" name="salesrep">
<option value=""> </option>
<option value="john smith">john smith</option>
<option value="Bruce Jones" selected >Bruce Jones</option>
<option value="Adam Calitz">Adam Calitz</option>
<option>108</option>
</select>
Danke noch einmal,
Gesamtes Skript
<script type="text/javascript">
$(document).ready(function () {
$("#customer").autocomplete(
{
source: "get_customers",
messages:
{
noResults: '',
results: function() {}
},
select: function( event, ui )
{
var selectedObj = ui.item;
$.post('GetSalesRepfromCustomer', {data:selectedObj.value},function(result) {
alert(result[0]);
var selnametest="Bruce Koller";
$("#salesrep").val(selnametest);
});
}
});
});
</script>
Gerendertes HTML ist:
<select id="salesrep" data-theme="a" data-mini="true" name="salesrep">
<option value=""> </option>
<option value="RyanLubuschagne">Ryan Lubuschagne</option>
<option value="Bruce Jones">Bruce Jones</option>
<option value="Adam Calitz">Adam Calitz</option>
</select>
Versuche dies :
$('select[name^="salesrep"] option[value="Bruce Jones"]').attr("selected","selected");
Ersetzen Sie einfach option[value="Bruce Jones"]
durch option[value=result[0]]
Bevor Sie eine neue Option auswählen, möchten Sie möglicherweise die vorherige Auswahl aufheben:
$('select[name^="salesrep"] option:selected').attr("selected",null);
Möglicherweise möchten Sie auch Folgendes lesen: jQuery spezifischen Options-Tag-Text abrufen
Edit: Mit jQuery Mobile bietet dieser Link eine gute Lösung: jquery mobile - set select/option values
Legen Sie den Wert fest, der als Dropdown-Option ausgewählt wird:
$("#salesrep").val("Bruce Jones");
Wenn es immer noch nicht funktioniert:
Ich glaube nicht, dass irgendjemand etwas erwähnt hat, und einen dummen Fehler, den ich in der Vergangenheit gemacht habe (vor allem, wenn man dynamisch ausfüllt). Das .val () von jQuery funktioniert nicht für eine Select-Eingabe, wenn es keine Option gibt, deren Wert mit dem angegebenen Wert übereinstimmt.
Hier ist eine Geige, die erklärt -> http://jsfiddle.net/go164zmt/
<select id="example">
<option value="0">Test0</option>
<option value="1">Test1</option>
</select>
$("#example").val("0");
alert($("#example").val());
$("#example").val("1");
alert($("#example").val());
//doesn't exist
$("#example").val("2");
//and thus returns null
alert($("#example").val());
Sie müssen YourID und value = "3" für Ihre aktuellen Werte ersetzen.
$(document).ready(function() {
$('#YourID option[value="3"]').attr("selected", "selected");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<select id="YourID">
<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
<option value="4">D</option>
</select>
und value = "3" für Ihre aktuellen.
$('#YourID option[value="3"]').attr("selected", "selected");
<select id="YourID" >
<option value="1">A </option>
<option value="2">B</option>
<option value="3">C</option>
<option value="4">D</option>
</select>
$(document).ready(function() {
$('#YourID option[value="3"]').attr("selected", "selected");
$('#YourID option:selected').attr("selected",null);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<select id="YourID">
<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
<option value="4">D</option>
</select>
Bei der Übereinstimmung zwischen .val('Bruce jones')
und value="Bruce Jones"
wird zwischen Groß- und Kleinschreibung unterschieden. Es sieht so aus, als würden Sie Jones in einem Fall groß machen, aber nicht im anderen. Suchen Sie entweder nach, wo der Unterschied herkommt, verwenden Sie statt des Namens eine ID oder rufen Sie .toLowerCase()
für beide auf.