onclick事件按钮放在每行jqgrid没有触发?

时间:2016-03-23 10:04:15

标签: javascript jquery html ajax jqgrid

情况:我的应用程序执行AJAX请求,收到的数据显示在以下JQgrid中。 listData(data)是在此{a} ajax请求的success回调中调用的函数,

data是从请求收到的JSON数据。

buildJqGrid是一个自定义函数,用于调用表和div html元素上的.jqgrid()

buttonFormatter是我的名为Action

列的自定义格式化程序
function listData(data) {
    var containerName = 'datatablea3',
        columnNames = ["Name", 
            "Email", 
            "Language", 
            "Office", 
            "alter email", 
            "Action"
        ],
        columnModels = [{
            name: 'Name',
            index: 'Name',
            width: '200px'
        },{
            name: 'Email',
            index: 'Email',
            width: '200px'
        }, {
            name: 'Language',
            index: 'Language',
            width: '200px'
        }, {
            name: 'Office',
            index: 'Office',
            width: '200px'
        }, {
            name: 'AlterEmail',
            index: 'AlterEmail',
            width: '200px'
        }, {
            name: 'action',
            width: '200px',
            formatter: buttonFormatter
        }],
        sortColumnName = 'Name',
        caption = "Employees",
        rowNum = 25,
        pager = '#pager2a3',
        grouping = false,
        groupingView = {},
        rowList = [25, 50, 100];

    buildJqGrid(containerName, data, columnNames, columnModels,
            sortColumnName, caption, rowNum, pager, grouping, 
                groupingView, rowList, true, 'asc');
}

问题:当运行此jsp时,数据已成功显示在每个记录中的jqgrid with view按钮中,但是当我单击视图按钮时,没有任何反应!

我在控制台中查看它显示"控制格式化程序"但是点击查看按钮时,它不显示"控制点击功能"。

我也尝试使用editLink格式化程序,但仍然存在相同的错误,

任何人都可以告诉我为什么我的按钮的onclick事件没有被解雇?

2 个答案:

答案 0 :(得分:0)

“click”已经是一个函数,因此你覆盖它,什么都不会触发。

试试这个

function buttonFormatter(cellvalue, options, rowObject) 
{
console.log("control in button formatter");
 return '<button onclick=\"clickFunction();\">View</button>'; 
} 
function clickFunction()
{
    console.log("control in click function");
    alert("hello");
}

简单小提琴:https://jsfiddle.net/virginieLGB/5e5LL5po/1/

答案 1 :(得分:0)

尝试这样,我也在我的项目中使用相同的功能(JQ Grid),尝试HTML输入类型而不是按钮,

使用您的代码时,单击事件正在触发,但整个网页正在重新加载。

function buttonFormatter(cellvalue, options, rowObject) {
    if (rowObject.Status != "Not Started") {
        console.log("Zumbaa");
        var edit = "<input class='Viewbtn'  type='button' value='View' onclick=\"ShowMigrationProcess(" + cellvalue + ");\"  />";
        return edit;
    }
    return '';
}