2016-04-21 116 views
0

當我部署代碼時,它給了我一個錯誤: saveRows不是函數 那麼,怎麼回事?在onClick中調用javascript函數

dataGrid.prototype = { 
 
     display: function() { 
 
     var self = this; 
 
     var html = []; 
 
     var check = 0; 
 
     var lastSelection; 
 
     html.push("<div style='margin-left:20px'>"); 
 
     html.push("<input class='btn btn-default' type='button' value='Save All Rows' onclick='saveRows()'' />"); 
 
     html.push("<table id='" + this.id + "" + "'class='table'>\n</table>"); 
 
     html.push("<div id='pagger_" + this.id + "'></div>"); 
 
     html.push("</div>"); 
 
     $('body').append(html.join("")); 
 
     $("#" + this.id).jqGrid({ 
 
      // ... 
 
     }); 
 
     }, 
 
     // ... 
 
     saveRows: function() { 
 
     var ids = $("#" + this.id).jqGrid('getDataIDs'); 
 
     for (var i = 0; i < ids.length; i++) { 
 
      $("#" + this.id).jqGrid('saveRow', ids[i]); 
 
     } 
 
     } 
 
    };

因此,任何其他建議?

+0

它不應該是'的onclick = 'saveRows()'',而不是'的onclick = 'saveRows()'''(用兩個''')? –

+0

並嘗試'dataGrid.saveRows()' –

+0

錯字錯誤抱歉..但仍然存在相同問題 –

回答

0

您可以更改

<input class='btn btn-default' type='button' value='Save All Rows' 
     onclick='saveRows()'' /> 

<input id='mysave' class='btn btn-default' type='button' value='Save All Rows'/> 

,並使用

$("#mysave").click(function() { 
    // any code executed on click on the button 
}); 
0

saveRows功能是dataGrid原型的一部分。因此它沒有被定義爲全局函數 - 並且不能被定義爲純HTML中的onclick處理程序。

您可以通過使用jQuery而不是HTML字符串創建DOM元素並直接綁定onclick回調來解決您的問題。例如(未測試):

$(body).append(
    $('<div/>').style('margin-left', '20px').append(
     $('<button/>', { 
      'class': 'btn btn-default', 
      'text': 'Save All Rows' 
     }).on('click', function() { 
      self.saveRows(); 
     }), 
     $('<table/>', { 
      'id': self.id, 
      'class': 'table' 
     }), 
     $('<div/>', { 
      'id': 'pager_' + self.id 
     }) 
    ) 
); 
0

變化這樣的:

html.push("<input class='btn btn-default' type='button' value='Save All Rows' onclick='saveRows()'' />"); 

實際的對象:

var theInput = $("<input class='btn btn-default' type='button' value='Save All Rows'>"); 
    $(document).on("click", theInput, function(){self.saveRows()}); 

,然後,將其添加到HTML陣列。

html.push($(theInput)[0].outerHTML); 

https://jsfiddle.net/atg5m6ym/3524/

0

你可以試試這個

$('body').on('click','#yourButtonId',function(){ 
    saveRows(); 
});