2016-07-14 66 views
1

我們可以通過獲得正常的HTML文本框的默認值:得到默認值文本框的同時在線編輯

$("#textboxId").prop("defaultValue"); 

但是裏面的jqGrid(在線編輯),而編輯行,如果選擇該文本框並檢查defaultValue,它總是空的。

我想在編輯模式時獲取文本框的原始值,以檢查文本框的值是否真的發生了變化。

請幫忙。謝謝。

+0

的可能的複製[jqGrid的默認值不起作用?](http://stackoverflow.com/questions/10186343/jqgrid-default-value-does-not-work) – Kinetic

+0

感謝響應,但沒有。html - defaultValue屬性和你提到的文章是一樣的嗎?沒有。 –

回答

1

你需要做的是使用jqGrid選項的onSelectRow函數,當用戶單擊內聯編輯中的行時,獲取舊的rowdata,然後使用beforeSaveRow檢查更改。

這是它的代碼和一個 jsFiddle的鏈接。

var lastSel = 0; 
      var mydata = [ 
        {id:"1", name: "abc",desc: "desc 11"}, 
        {id:"2", name: "def",desc: "hello there"}, 
        {id:"3", name: "xyz",desc: "desc 44"} 
       ]; 
      $("#list").jqGrid({ 

       datatype: "local", 
       data: mydata, 
       height: "auto", 

       colModel :[ 
       {name:'id',key:true, index:'idcustomers', width:55}, 
        {name:'name', width:100,editable: true}, 
        {name:'desc', width:100,editable: true}     
       ], 
       pager: '#pager', 
       rowNum:10, 
       rowList:[10,20,30], 
       sortname: 'idcustomers', 
       sortorder: 'asc', 
       viewrecords: true, 
       gridview: true, 
       caption: 'Customers', 

       cellsubmit: 'clientArray', 
       onSelectRow: function (id) { 
      var currentRow = $('#list').jqGrid("getRowData",id); 

      if (id && id !== lastSel) { 
      lastSel=id; 
      } 
      else 
      { 
      return; 
      } 
      jQuery('#list').editRow(id, 
      { 
       "keys": true,   
       oneditfunc: function() { 


       }, 
       "successfunc": null, 
       "url": null, 
       "extraparam": {}, 
       "aftersavefunc": null, 
       "errorfunc": null, 
       "afterrestorefunc": null, 
       "restoreAfterError": true, 
       "beforeSaveRow": function (options, rowid) { 
        // jqGrid calls its own SaveRow when the user hits 'Enter'. We need it to call ours. 
        // Note, the 'beforeSaveRow' is undocumented, but it gets invoked before jqGrid calls its own SaveRow method. 

       var newName = jQuery('#' + rowid + '_' + 'name').val();   
        var oldName = currentRow.name; 

       if(newName!=oldName) 
       { 
        alert('changed');    
       } 
        return true; 

       }, 
      }); 
      } 

      });