2016-04-12 4 views
0

Ich verwende https://vitalets.github.io/x-editable/docs.html als Auswahlelement. Zusätzlich zum Senden des neuen Werts an den Server (d. H. S, p) möchte ich auch den vorherigen Wert (d. H. B) senden. Das folgende Skript wird dies zunächst tun, sendet aber nur den ursprünglichen Wert (d. H. P), selbst wenn es mehrmals geändert wird und der neue vorherige Wert nicht mehr p ist.Vorherigen Wert für xeditable an den Server senden

<a href="javascript:void(0)" class="doc-type" data-value="b"></a> 

$('.doc-type').editable({ 
    type: 'select', 
    placement: 'right', 
    title: 'Document Type', 
    source: [{value:'b',text:'Buy'},{value:'s',text:'Sell'},{value:'p',text:'Project'}], 
    //params: {task:'saveDocType',controller:'portal',cid:ayb.component.id,CSRF:ayb.CSRF,doc_id:function(){console.log(this);}}, 
    params: function(params) { 
     //originally params contain pk, name and value 
     delete(params.name); 
     params.task = 'saveDocType'; 
     params.controller = 'portal'; 
     params.cid = ayb.component.id; 
     params.CSRF = ayb.CSRF; 
     params.doc_id=$(this).parent().parent().data('id'); 
     params.v_old=$(this).data('value'); 
     return params; 
    }, 
    url: 'index.php', 
    pk: function(){return $('#id').val();}, 
    error: function (response, newValue) { 
     //Unlike other validation, save function to return non 200 header. 
     return response.responseText; 
    }, 
}); 

Antwort

0

ich da erwarten, ist ein besserer Weg, aber eine Möglichkeit ist, die newValue in den Erfolg Rückruf zu speichern.

$('.doc-type').editable({ 
    type: 'select', 
    source: [{value:'b',text:'Buy'},{value:'s',text:'Sell'},{value:'p',text:'Project'}], 
    params: function(params) { 
     //originally params contain pk, name and value 
     params.v_old=$(this).data('value'); 
     return params; 
    }, 
    url: 'index.php', 
    pk: function(){return $('#id').val();}, 
    success: function(response, newValue) { 
     $(this).data('value',newValue) 
    } 
});