在onClick中调用javascript函数

时间:2016-04-21 13:28:00

标签: javascript jquery jqgrid

当我部署我的代码时,它给了我一个错误: 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]);
        }
      }
    };
&#13;
&#13;
&#13;

所以其他任何建议??

4 个答案:

答案 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
});

答案 1 :(得分: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
        })
    )
);

答案 2 :(得分: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/

答案 3 :(得分:0)

你可以试试这个

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