2016-06-21 11 views
0

Ive folgte diesem Beispiel aus einem anderen SO-Thread: X-editable custom field type not respecting overridden defaults und es half mir, ein ähnliches benutzerdefiniertes Feld mit x-editierbar zu erstellen. Alles funktioniert ok, aber ich kann nicht herausfinden, wie der 'Text' der Auswahl dargestellt/dargestellt wird - das SO-Beispiel gibt den 'Wert' aus. meine js die x-editierbar meine benutzerdefinierte Eingaben verwenden, um Initialis ist somit:x-editierbare benutzerdefinierte Felder können nicht Text des Auswahlmenüs

  $('#stffulladdress').editable({ 
     url  : '', 
     pk  : 6, 
     value : { 
      address : "", 
      city  : "", 
      region : "", 
      postcode : "", 
      country : "eng" 
     }, 
     sourceCountry: [ 
      { value: "eng", text: "ENGLAND" }, 
      { value: "ire", text: "IRELAND" }, 
      { value: "sco", text: "SCOTLAND" }, 
      { value: "cym", text: "WALES" } 
     ], 
     validate : function(value) { 
      if (value.address == '' || value.postcode == '') return "Address first lines AND Postcode required"; 
     }, 

     display : function(value) { 
      if (!value) { 
      $(this).empty(); 
      return; 
      } 
      console.log(value.country); 
      var html = $('<div>').html(value.address + '<br />' + value.city + '<br />' + value.region + '<br />' + value.postcode + '<br />' + value.country); 
      $(this).html(html); 
     } 
     }); 

Meine benutzerdefinierte x editierbare Klasse das gleiche wie das SO Beispiel mit dem einzigen Unterschied erwähnt ist i ist mehr Eingänge haben -Sie ok arbeiten wie erwartet. Ich hätte gedacht, dass dieser Ausschnitt aus der x-edit-Klasse den Text des ausgewählten Elements wird:

 value2html: function(value, element) { 
     if(!value) { 
      $(element).empty(); 
      return; 
     } 
     var countryText = value.country; 
     $.each(this.sourceCountryData, function (i, v) { 
      if (v.value == countryText) { 
       countryText = v.text.toUpperCase(); 
      } 
     }); 
     var html = $('<div>').html(value.address + ',<br />' + value.city + ',<br />' + value.region + ',<br />' + value.postcode + ',<br />' + countryText); 
     $(element).html(html); 
    }, 

Aber upn anderes Land auswählen Anzeige i noch das Land Wert „eng“ bekommen und nicht den Text „England“ .

Ich habe versucht:

value.country, die mir den Wert 'eng' und value.text gibt undefined gibt

Jede Idee, wie ich das bekommen kann ausgewählter Text ??

dank

Antwort

0

die sourceCountry wie folgt Versuchen:

sourceCountry: [ 
    { "eng": "ENGLAND" }, 
    { "ire": "IRELAND" }, 
    { "sco": "SCOTLAND" }, 
    { "cym": "WALES" } 
],