2

此问题仅在 Chrome 中发生。(jqgrid v 4.4.1)

我有一个网格,每一行都有一个可编辑的单元格。更新这些可编辑字段时,我将焦点移动到网格中的下一个启用字段,以便选择该行。

问题是,如果下一个焦点字段不在当前视口中,则浏览器(不是 chrome)本身会将该记录滚动到视口并且用户可以看到它。但这在 Chrome 中没有发生(没有将焦点记录滚动到视口)。

我使用 jqgrid 自定义格式化程序创建这些可编辑单元格,因为我需要创建不同类型的输入字段。

当类型为单选或组合(选择)chrome 时工作正常,将焦点元素滚动到屏幕,但当类型为“文本”时,chrome 中不会发生这种情况。我找不到任何合乎逻辑的理由。

这些是创建的字段,

收音机:

<td role="gridcell" style="" aria-describedby="myGrid_editCol">
<span class="editable">
    <div class="customelement" id="36_editCol" name="editCol">
        <input id="36_editCol_id1" name="36_editCol_nm" type="radio" value="0"> No 
        <input id="36_editCol_id2" name="36_editCol_nm" type="radio" value="1" checked="checked"> Yes 
        <input id="36_editCol_id3" name="36_editCol_nm" type="radio" value="?"> Unknown     
    </div>
</span>

文本:

<td role="gridcell" style="" aria-describedby="myGrid_editCol">
<span class="editable">
    <div class="customelement" id="75_editCol" name="editCol">
        <input type="text" id="75_editCol_id" maxlength="10" value="sd">
    </div>
</span>

4

1 回答 1

1

最后我弄清楚了这个问题的原因。

实际上这不是 jqgrid 的问题,而是 Chrome。

原因是:我正在使用“select()”和“setSelectionRange()”函数来定位光标并突出显示值。分配有这些功能的输入字段是具有滚动问题的输入字段。

//to highlight...
$('#myFld').select();
.....
//to position the cursor..
this.setSelectionRange(begin, end);

后来我发现这在 chrome 中被列为问题https://code.google.com/p/chromium/issues/detail?id=32865

解决方法是:我使用 setTimeOut() 方法更改了我的代码,因为这也是许多其他帖子中提到的此问题的唯一可用解决方法。

//to highlight...
setTimeout(function() {$('#myFld').select();}, 10);
.....
//to position the cursor..
setTimeout(function() {this.setSelectionRange(begin, end);}, 10);

感谢你所做的一切..

于 2013-06-05T03:54:20.010 回答