Javascript jqGrid内联编辑:防止用户单击正在编辑的行的外部(防止取消编辑/添加行)
下午好 今天的下半部分我一直在讨论这个问题: 我有一个启用了内联添加/编辑的jqGrid。一切都很好,但是,我正在努力防止正在编辑/添加的行在用户单击另一行时被自动取消。我已尝试在“beforeSelectRow”中返回false,“beforeSelectRow”中的“resetSelection”。设置“beforeSelectRow”中正在编辑的行的选择,将所有不可编辑的行设置为禁用;都没有用。此外,用户(此时的我)单击另一行时,似乎不会触发“gridID\u licancel”按钮;通过其他方法直接取消编辑/添加“会话” 我希望能够从源头上钩住这种行为,因为添加/编辑会话的取消是在“beforeSelectRow”事件触发之前发生的,而不是通过“gridID\u licancel”单击事件的触发器发生的 当然,当一行被编辑或添加时,用户不应该像疯子一样在所有其他行上点击,或者什么都不点击,但是,我预见到关于这个功能的反馈。在这些行中没有太多的净空,用户可能会错过“保存”按钮(当行变为可编辑时内联生成)并单击另一行,然后重新开始,这可能是一个相当常见的情况。仅仅把排得更高并不是合法的解决办法 需要注意的另一点是,这种行为仅在单击网格上的另一行时发生。我使用的是一个模态对话框,里面有一个选项卡式div,每个选项卡都有自己的形式。这个特定网格中的一行可以坐在那里等待编辑,用户可以转到另一个选项卡,提交数据,然后返回,而该行仍然在等待编辑;它不是自动取消本身。此外,在这个网格上,我已经硬设置了网格的高度,因此如果用户在网格中没有行的空白区域单击,则编辑/添加会话不会取消。因此,这只会在单击另一行时发生Javascript jqGrid内联编辑:防止用户单击正在编辑的行的外部(防止取消编辑/添加行),javascript,jquery,jqgrid,Javascript,Jquery,Jqgrid,下午好 今天的下半部分我一直在讨论这个问题: 我有一个启用了内联添加/编辑的jqGrid。一切都很好,但是,我正在努力防止正在编辑/添加的行在用户单击另一行时被自动取消。我已尝试在“beforeSelectRow”中返回false,“beforeSelectRow”中的“resetSelection”。设置“beforeSelectRow”中正在编辑的行的选择,将所有不可编辑的行设置为禁用;都没有用。此外,用户(此时的我)单击另一行时,似乎不会触发“gridID\u licancel”按钮;通过
因此,当用户编辑一行时,如何在取消添加/编辑会话之前捕获另一行的选择???感谢您的帮助。我实际上能够找到允许这种行为的必要(但文档中缺少)代码: “restoreAfterSelect”InlineAV属性需要设置为false,以允许在“OnSetrow”、“beforeSelectRow”、“ondblClickRow”或“onRightClickRow”中进行任何类型的操作 当用户在编辑另一行时双击另一行时(例如,您确定要结束当前会话等),我能够调用一个功能完整的确认对话框,但在处理上下文菜单时,我无法获得相同的成功。我试着只在右键单击时绑定上下文菜单,而不是在load complete(加载完成)时绑定,但是菜单只会在每三次左右的单击时出现。其他的尝试都失败了,但我忘记了它们是什么,因为它们都是徒劳的 不过,我所能做的只是在用户编辑时完全解除上下文菜单事件/功能的绑定。如果用户试图双击另一行,或打开上下文菜单,将显示一条消息,告诉他们完成编辑,或者如果要编辑/添加/删除其他行,则取消。我还设置了cancel按钮,每当单击时刷新网格,以便将上下文菜单重新绑定到每一行 代码片段,如果有人发现它有用的话(主要问题是不知道,遇到了'restoreAfterSelect'): 并且,在#tablename_liadd和#tablename_liedit按钮的单击事件中:
$('#tableTask_iladd, #tableTask_iledit').bind('click', function () {
//if the context menu is visible then hide it. (for sitch where user brings up context menu, but then goes and clicks on the add/edit button.
$('#jqContextMenu').hide();
//while in edit/add mode, user should not be able to bring up the context menu until they end their current session. this context menu is re-bound once the user clicks the cancel button(refreshes the grid) or they save the data they are inputting (will result in a refresh once the transaction is completed).
$("#tableTask tr.jqgrow").unbind('contextmenu');
$('#tableTask_iladd, #tableTask_iledit').bind('click', function () {
//if the context menu is visible then hide it. (for sitch where user brings up context menu, but then goes and clicks on the add/edit button.
$('#jqContextMenu').hide();
//while in edit/add mode, user should not be able to bring up the context menu until they end their current session. this context menu is re-bound once the user clicks the cancel button(refreshes the grid) or they save the data they are inputting (will result in a refresh once the transaction is completed).
$("#tableTask tr.jqgrow").unbind('contextmenu');