Javascript internet explorer中的jQuery或jqGrid错误
看看下面的jqGrid示例 (用户名:PublicAccess,密码:12345678) 您会注意到,默认情况下,选项按钮处于禁用状态,并在选定行上启用,单击:Javascript internet explorer中的jQuery或jqGrid错误,javascript,jquery,internet-explorer,jqgrid,Javascript,Jquery,Internet Explorer,Jqgrid,看看下面的jqGrid示例 (用户名:PublicAccess,密码:12345678) 您会注意到,默认情况下,选项按钮处于禁用状态,并在选定行上启用,单击: beforeSelectRow: function (ID, event) { $("#" + _LastSelectedRow + "_SaveButton").button("disable"); $("#" + _LastSelectedRow + "_DeleteButton").button("disable
beforeSelectRow: function (ID, event) {
$("#" + _LastSelectedRow + "_SaveButton").button("disable");
$("#" + _LastSelectedRow + "_DeleteButton").button("disable");
$("#" + ID + "_SaveButton").button("enable").click(function (event) {
event.stopPropagation(); event.preventDefault();
});
$("#" + ID + "_DeleteButton").button("enable").click(function (event) {
event.stopPropagation(); event.preventDefault();
});
_LastSelectedRow = ID;
}
您还将注意到,在最初声明的按钮wireup中,它们被禁用,wiredup用于防止回发:
$(".DeleteButton").button({ icons: { primary: 'ui-icon-closethick' }, text: false,
disabled: true }).css({ width: "45px" }).click(function (event) {
event.stopPropagation(); event.preventDefault();
});
$(".SaveButton").button({ icons: { primary: 'ui-icon-check' }, text: false,
disabled: true }).css({ width: "45px" }).click(function (event) {
event.stopPropagation(); event.preventDefault();
});
firefox和chrome中的行为与预期完全相同,但当点击按钮列中未选中的行时,good old IE会发出回发。单击其他列(如“说明”)时,该行为与预期一样
我不明白为什么会发生这种情况,我永远欠任何一个能对这种情况有所了解的人的债
PS:我知道我在两个不同的点上连接了两次按钮的事件处理程序,这只是为了解决问题的最后一次尝试(显然不起作用) 您的主要问题是没有指定您创建的按钮的
类型
属性。默认值在不同的浏览器中是不同的。如果类型为submit
,则会出现其他问题。禁用提交按钮时存在一些已知问题。我不确定你是否真的需要提交。可能只需自定义单击事件处理程序就足够了。如果确实需要提交,则可以使用按钮和type=“button”
,但可以调用表单提交
$("#form1").submit();
在的内部,单击事件句柄。您可以看到的代码的修改版本。我调用$(“#form1”).submit()
仅在中单击“保存”按钮的事件句柄,而不是“删除”按钮。表单提交的另一个缺点是重新加载页面并删除对网格的选择
此外,在中,我修复了一些小但重要的错误,并对代码进行了一些小的改进:
由于使用了Additional to other,原始代码两次加载了jqGrid的一些Java脚本
原始代码使用了ui.multiselect.js
和jquery.searchFilter.js
,需要加载jquery.searchFilter.css
和ui.multiselect.css
您的HTML页面应该在页面标题中包含
您可以使用jqGrid的参数而不是使用addRowData
方法更有效、更方便地加载jqGrid的数据
您可以对id
列使用key:true
选项,而不是使用localReader:{id:'id'}
。最好是读取,它可以处理所有datatype
值,而不仅仅是本地数据
在SelectRow之前的内部,如果未解除上一个处理程序的绑定,则不应使用单击
绑定。如果在绑定函数的当前代码中插入alert(“in click”)
,您将看到在每次选择同一行后,alert
函数将被调用多次(两次、三次等等)。因此,要修复代码,在选择行之前,应删除中的绑定。您已经绑定了一个事件句柄,开始时单击一次事件句柄(请参见$(“.DeleteButton”)。按钮(…)。单击gridComplete
中的)
正如我上面所描述的,您应该在HTML代码片段中添加type=\“button\”
,并将其放置在选项
列中
因为您只设置了一个单元格值,所以最好使用setCell
方法而不是setRowData
方法
您应该增加选项
列的宽度,以便在Google Chrome浏览器中看到一行中插入的按钮。在我的修改版本中,我使用了宽度:98
而不是原来的宽度:96
建议对HTML代码进行一些小改动,使其成为有效的XHTML1.0过渡代码或XHTML1.0严格代码。(参见修改页面中的注释)
如果说你是一个gemoleg,那就太轻描淡写了。谢谢你!