[英]calling a javascript function in onClick
當我部署代碼時,它給了我一個錯誤:saveRows不是一個函數那么怎么了?
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]); } } };
還有其他建議嗎?
你可以改變
<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
});
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
})
)
);
改變這個:
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);
你可以試試這個
$('body').on('click','#yourButtonId',function(){
saveRows();
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.