2016-04-12 6 views
0

私はhttps://vitalets.github.io/x-editable/docs.htmlを選択要素として使用しています。サーバーに新しい値(s、p)を送信するだけでなく、以前の値(b)も送信したいと考えています。次のスクリプトは最初はそのようにしますが、複数回変更され、新しい以前の値がpでなくても、元の値(つまりp)のみを送信します。以前のxeditable値をサーバーに送信

<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; 
    }, 
}); 

答えて

0

もっと良い方法があると思いますが、成功のコールバックにnewValueを保存する方法もあります。

$('.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) 
    } 
}); 
関連する問題