2013-08-20 3 views
6

Ich benutze das select2 plugin um Daten zu laden. Ich benutze eine aspx-Seite, die JSON-Daten zurückgibt, und select2-Plugin. Nachdem der Benutzer einen Wert aus dem Textfeld select2 ausgewählt hat, erzwinge ich die Seite zum Postback. Nach dem Postback benutze ich den folgenden Code um neu zu laden, um den Text in das select2 Textfeld zu setzen.kann nicht val() aufrufen, wenn initSelection() nicht definiert ist Fehler in select2 plugin

var data = { "PatientID": "XYX", "Email": "[email protected]" }; 

      $('#e6').select2('val', '123'); 

Aber System folgende Fehler werfen: cannot call val() if initSelection() is not defined

Auch wenn ich init definieren, bin ich um den Wert einzustellen nicht in der Lage. Ich verwende folgenden Code. Bitte helfen Sie mir, den Wert für das select2-Textfeld nach dem Postback festzulegen. !

$(document).ready(function() { 
     $("#e6").select2({ 
      placeholder: "Search for a movie", 
      minimumInputLength: 1, 
      ajax: { // instead of writing the function to execute the request we use Select2's convenient helper 
       url: "data.aspx", 
       dataType: 'json', 
       quietMillis: 1000, 
       data: function (term, page) { 
        return { 
         name: term 
        }; 
       }, 
       initSelection: function (element, callback) { 
        var data = { "PatientID": "XYX", "Email": "[email protected]" }; 
        callback(data); 
       }, 

       results: function (data) { 
        var results = []; 
        $.each(data, function (index, item) { 
         results.push({ 
          id: item['Email'], 
          text: item['PatientID'] 
         }); 
        }); 
        return { 
         results: results 
        }; 
       }, 
      }, 
     }); 

    }); 

    window.onload = function() { 
     var data = { "PatientID": "XYX", "Email": "[email protected]" }; 
     //When this is called system is throwing error 
     //This code is required to show the value in select2 textbox after the post back 
     $('#e6').select2('val', data); 
    } 

    $(document).ready(function() { 
     $("#e6").on("select2-selecting", function (e) { 
      //alert("selecting val=" + e.val + " choice=" + JSON.stringify(e.choice)); 
      var id = document.getElementById('<%= savebtn.ClientID %>'); 
      document.getElementById('<%= hdnFld.ClientID %>').value = e.val; 
      id.value = e.val; 
      //causes post back 
      id.click(); 

     }); 
    }); 
+4

'initSelection' sollte nicht innerhalb der' ajax'-Eigenschaft sein. – user1983983

Antwort

5

Sie machen Fehler, ich habe mit diesem Problem konfrontiert, und ich sah Sie question.Then i de API-Dokumentation von Select2 und Quelle gelesen, dass ich wrong.Pleas legen Sie die initSelection parallel mit ajax.like dies:

$("#e6").select2({ 
     placeholder: "Search for a movie", 
     minimumInputLength: 1, 
     initSelection: function (element, callback) { 
       var data = { "PatientID": "XYX", "Email": "[email protected]" }; 
       callback(data); 
      }, 
     ajax: { // instead of writing the function to execute the request we use Select2's convenient helper 
      url: "data.aspx", 
      dataType: 'json', 
      quietMillis: 1000, 
      data: function (term, page) { 
       return { 
        name: term 
       }; 
      }, 


      results: function (data) { 
       var results = []; 
       $.each(data, function (index, item) { 
        results.push({ 
         id: item['Email'], 
         text: item['PatientID'] 
        }); 
       }); 
       return { 
        results: results 
       }; 
      }, 
     }, 
    }); 
Verwandte Themen