webentwicklung-frage-antwort-db.com.de

Einstellung der 'ausgewählten Option' einer Auswahlliste mit Jquery

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>
27
Smudger

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 ​​

46
Jb Drucker

Legen Sie den Wert fest, der als Dropdown-Option ausgewählt wird:

$("#salesrep").val("Bruce Jones");

Hier funktioniert Demo

Wenn es immer noch nicht funktioniert:

  1. Bitte überprüfen Sie die JavaScript-Fehler in der Konsole.
  2. Stellen Sie sicher, dass Sie Jquery-Dateien enthalten haben
  3. ihr Netzwerk blockiert die Jquery-Datei bei externer Verwendung nicht.
  4. Überprüfen Sie Ihre Ansichtsquelle einige Zeit, um die exakte Kopie von Elementstoppjquery zu überprüfen, damit sie ordnungsgemäß funktioniert
27
Zaheer Ahmed

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());
3
Jake Zieve

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>
2
Oscar Fuquen

$(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>

1
Madhuka Dilhan

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.

0
Black Mantha