我一直在努力使用jqxGrid和使用jqxNumberInput渲染的单元格来获得一个非常简单的功能
editor.jqxNumberInput({ decimalDigits: 2, spinButtonsStep: 0.1, spinMode: "simple", decimalSeparator: decimalSeparator, groupSeparator: groupSeparator });
基本上,当用户单击单元格时,光标一直放置在文本(数字)的最右边,我的老板希望单元格的内容突出显示(选定文本),因此用户不必移动光标左侧以开始输入
我已经研究了jqx Grid文档很长时间了,似乎没有什么可以实现这一目标的。
http://www.jqwidgets.com/jquery-widgets-documentation/documentation/jqxgrid/jquery-grid-api.htm
我尝试绑定到cellbeginedit事件,并假定可以使用该事件获取目标元素并以这种方式选择它,但是event.target值是整个网格,而不是单元格本身。
$(element).on('cellbeginedit', function (event) { // event.target == grid not cell });
我也尝试使用getcell方法获取单元格,但是这将返回该单元格的数据,而不是元素本身。
var cell = $(element).jqxGrid("getcell", args.rowindex, args.datafield);
// cell then equals the data for the row not with no reference to the
有问题的元素
重申一下,我需要进行修改,修改hack可以使用户单击jqxNumberInput并且单元格进入编辑模式,从而选中该单元格中的所有文本(突出显示)
在这个问题上的任何帮助将不胜感激
最佳答案
您应该将编辑器自定义逻辑放在列的inititor回调函数中。您可以在那里尝试使用jqxNumberInput API(例如“ focus”)或用于选择输入中所有文本的代码。
var input = editor.find('input');
var length = input.val().length;
try {
if ('selectionStart' in input) {
input.focus();
input.setSelectionRange(0, length);
}
else {
var range = input.createTextRange();
range.collapse(true);
range.moveEnd('character', length);
range.moveStart('character', 0);
range.select();
}
}
catch (error) {
}
在上面的代码中,editor是从jqxGrid传递到列的initeditor函数的参数。