jqgrid中的自动完成文本框显示错误,项目未定义
autocomplete textbox within jqgrid shows error, item is undefined
jqgridgrid中的一个列在编辑模式期间包含一个自动完成的文本框。自动完成与ajax调用正确连接,以获取自动完成的数据。
当使用鼠标从自动完成列表中选择一个项目时,选择工作正确,不会抛出错误。然而,当我使用键盘向下箭头选择一个项目,然后按回车键,该项目没有被选中,事实上jquery。自动完成的UI插件抛出错误,声明项目未定义。
这里的问题是,jqgrid编辑完成事件和自动完成选择事件都在监听回车键,jqgrid编辑完成事件在jquery之前触发。UI自动完成的选择事件,因此编辑单元格关闭编辑和jquery的选择事件。UI自动完成插件没有接收选中的项,因此我们得到错误项未定义。
谁能建议如何确保编辑完成事件和自动完成事件完成成功没有短路,目前正在发生与jqgrid的编辑完成事件????
在我看来,最简单的方法是在调用autocomplete
之前,在dataInit
内部解绑定 keydown
(调用.unbind("keydown")
)。您应该管理自己输入和Esc键强制放弃或保存编辑
我通过在afterCellEdit Event中使用以下代码修复了此问题:
var cellDOM = this.rows[iRow].cells[iCol], oldKeydown,
$cellInput = $('input, select, textarea', cellDOM),oldKeydown,
events = $cellInput.data('events');
if (events && events.keydown && events.keydown.length) {
oldKeydown = events.keydown[0].handler;
$cellInput.unbind('keydown', oldKeydown);
$cellInput.bind('keydown', function (e) {
setTimeout(function () {
oldKeydown.call(this, e);
}, 100);
});
}
};
实际上,我在单元格的KeyDown处理程序中添加了一个延迟,使它在大约100毫秒后触发,这允许AutoComplete选择事件接收项目,并成功完成其"选择"事件。
相关文章:
- ng消息仅在触摸时显示错误,并在错误的初始显示上转换
- ui网格日期单元格过滤器,过滤日期格式导致显示错误的日期
- java脚本的数学方程显示错误的答案
- 如果用户输入的长度小于最小长度,则显示错误消息
- Push方法显示错误
- Javascript设置日期不起作用,显示错误的时间
- 显示错误的Ajax调用无法调试
- 显示错误结果的Javascript
- 分页逻辑显示错误的页码
- 如何显示错误消息
- 表单提交没有'如果为空,则不会显示错误消息
- 使用RecordRTC录制的WebRTC视频在IE和Safari中显示错误
- 如何仅在存在最小值和最大值时才显示错误消息
- AngularJS错误处理:根据错误数组显示错误
- PHP 显示错误的名称值
- 在 api 调用$resource显示错误和成功消息
- 为什么 Angularjs 总是显示错误消息
- 在单选按钮验证中同时显示错误消息
- jQuery'摇动'功能显示错误
- Jquery添加更多和删除冲突并显示错误值