34

私は次のjquery関数を持っています:

$.post('GetSalesRepfromCustomer', {
    data: selectedObj.value
}, function (result) {
    alert(result[0]);
    $('select[name^="salesrep"]').val(result[0]);
});

result[0]selected選択ボックスのアイテム として設定したい値です。result[0]に等しいBruce jones

選択ボックスはデータベース クエリによって入力されますが、レンダリングされた html の 1 つは次のとおりです。

<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]);選択ボックスの選択されたオプションを設定しません。私も$("#salesrep").val(result[0]);運なしで試しました。

どんな助けでも感謝します。

だから私が欲しいのは、営業担当者のドロップダウンリストで選択/強調表示されたオプションがブルース・ジョーンズであることです。

HTML は次のようになります。

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

再度、感謝します、

スクリプト全体

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

レンダリングされた HTML は次のとおりです。

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

7 に答える 7

31

ドロップダウンの選択オプションとして設定する値を設定します。

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

これが動作中のデモです

それでも機能しない場合:

  1. コンソールで JavaScript エラーを確認してください。
  2. jqueryファイルが含まれていることを確認してください
  3. 外部で使用している場合、ネットワークは jquery ファイルをブロックしていません。
  4. ビューソースを確認して、要素の正確なコピーが正しく機能するようにjqueryを停止してください
于 2013-07-25T11:21:26.443 に答える
0

.val()テキストで設定するのではなく、代わりにインデックスを使用するので、findそれを取得してから設定する必要があります。しかし、それも話の一部にすぎません。selected最初に他のすべてのオプションの選択を解除し、見つけたインデックスを使用して必要なオプションの属性を設定する必要があります。

値とテキストを同じにするつもりはありません。これは、実際に取得しているもの (値とテキスト) について肯定的な主張をするためです。これにより、何を扱っているかがわかり、この種の問題に遭遇しなくなります。

ところで、$('#myId')GUID を自動生成して ID の後に配置するため、SharePoint では役に立たないため、この構文は嫌いです。ただし、この場合は不要なので省略します。しかし、この構文は、その値を言う代わりに使用したい場合にも非常に便利であり、 orの代わりに使用できるため、非常に用途が広く、より多くの人に使用してもらいたい.$('[id*=myID]')*contains*$*starts withtitlenameid

JavaScript では大文字と小文字が区別されるため、大文字と小文字の問題も修正する必要があります。

$(document).ready(function() {
    var yourText = "Bruce Jones";

    // Remove all 'selected' attributes from all options
    $('select[id="salesrep"] option').removeAttr('selected');

    // Get the index for the value you want to set
    var idx = $('select[id="salesrep"] option').filter(function() {
        return $(this).html() == yourText;
    }).val();

    // Set the dropdown value by index and set it as selected by text
    var salesrepBox = $('select[id="salesrep"]');
    salesrepBox.val(idx);
    salesrepBox.find('option[value="' + yourValue + '"]').attr('selected','selected'); // note that .val() doesn't do this
    salesrepBox.click(); // may be useful and necessary for certain engines to cache the value appropriately

    console.log(salesrepBox.html()); // should show you that the selected option is Bruce Jones
    console.log(salesrepBox.val());  // should give you the index 2

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<select id="salesrep">
  <option value="1">John Smith</option>
  <option value="2">Bruce Jones</option>
  <option value="3">Adam Calitz</option>
</select>

jQuery Mobile の場合、ドロップダウンのselected属性に影響を与える行の後に、削除するか追加するかにかかわらず、これを行う必要がある場合があります。

salesrepBox.selectmenu("refresh", true);

または、.change();上記のコマンドの最後に a を実行します。例:

$('select[id="salesrep"] option').removeAttr('selected').change();
salesrepBox.find('option[value="' + yourValue + '"]').attr('selected','selected').change();
于 2021-11-05T17:42:39.023 に答える