2016-07-05 7 views
0

jqueryを使用してドロップダウンにオプションを追加しています。jqueryを使用してドロップダウンでオプションを選択できません

function GetAssociates(StoreNum,dropdownid) { 
     $.ajax({ 
      type: "POST", 
      url: "Appointment.aspx/BindAssociates", 
      data: "{storeNumber:" + StoreNum + "}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function(result){ 
       var rs = result.d; 
       var select = $("#" + dropdownid); 
       //var select = document.getElementById(dropdownid); 

       for (var i = 0; i < rs.length; i++) { 
        var opt = rs[i].trim(); 
        select.append(new Option(opt,opt)); 
       } 
      }, 
      error: function(result){ 
       alert("Failed to load dropdown" + result); 
      } 
     }); 
    } 

これは完全に機能し、ドロップダウンで値を確認できます。今私は以下のようにjqueryを使用して特定の値を選択しようとしていますが、値を選択していません。

$("#MST_CPH_AddAppointment_ddlAptAssociateName").val("MyValue"); 

上記のMyValueを選択するコードは、以下のように設計時に値を追加しても問題ありません。

<asp:DropDownList ID="ddlAptAssociateName" runat="server" CssClass="DropdownList"> 
      <asp:ListItem>SomeValue</asp:ListItem> 
      <asp:ListItem>MyValue</asp:ListItem> 
     </asp:DropDownList> 

これを手伝ってください。

+0

コード「$( "MST_CPH_AddAppointment_ddlAptAssociateName")。val( "MyValue"); 'を実行するときに値" MyValue "を使用できることを確認してください。値を設定した後にオプションが追加された場合、値を設定することはできず、値は変更されません – Mephiztopheles

+0

これを選択する前にドロップダウンを構築しており、ページのドロップダウンに表示されます – Prabi

+0

これをチェックしてください:https://jsfiddle.net/Mephiztopheles/h31nc2n6/オプションがすでに利用可能な場合は、値を設定しています。設定するオプションの値または属性のIDを確認します。テキストではなく、値は重要です – Mephiztopheles

答えて

1

ここでは、私はJSDocのを追加するために抵抗することはできません
を行く:D

/** 
* 
* @param StoreNum 
* @param dropdownid 
* @param {Function} callback 
* @constructor 
*/ 
function GetAssociates(StoreNum, dropdownid, callback) { 
    $.ajax({ 
     type  : "POST", 
     url  : "Appointment.aspx/BindAssociates", 
     data  : "{storeNumber:" + StoreNum + "}", 
     contentType: "application/json; charset=utf-8", 
     dataType : "json", 
     success : function (result) { 
      var rs  = result.d; 
      var select = $("#" + dropdownid); 
      //var select = document.getElementById(dropdownid); 

      for (var i = 0; i < rs.length; i++) { 
       var opt = rs[ i ].trim(); 
       select.append(new Option(opt, opt)); 
      } 
      // apply will run the function with 'this' as first committed argument-> select 
      callback.apply(select); 
     }, 
     error  : function (result) { 
      alert("Failed to load dropdown" + result); 
     } 
    }); 
} 

function load() { 
    // GetAssociates is a constructor due to uppercased name 
    // my idea will mark this as error -> never mind in your case 
    GetAssociates(1, "MST_CPH_AddAppointment_ddlAptAssociateName", function() { 
     this.val("MyValue"); 
    }); 
} 
+0

私はこれを試してみようと私は元に戻します。 – Prabi

+0

それは完璧にうまくいった:) – Prabi

0

.val()が間違っています。あなたは、次の手順を実行して、値を取得:

var myVal = $("#MST_CPH_AddAppointment_ddlAptAssociateName").val(); 

あなたは次のようにしてMyValueに値を設定します。

$("#MST_CPH_AddAppointment_ddlAptAssociateName").val("MyValue"); 
+0

私は彼が代わりに読んで設定しようとしていると思う。彼は正しい方法で機能を使用しています。私が彼の答えを編集した場合、このコメントを無視してください。 – Mephiztopheles

+0

私は設計時にオプションを追加すると同じコードが動作すると言いました。 – Prabi

+0

@Prabiそれはあなたの 'jQuery'が実行されてからその要素がページに表示されるので、値は表示されません。あなたの 'js'ファイルがページにロードされている地点を混乱させる必要があります。 – Adjit

関連する問題