2

この問題は Chrome でのみ発生しています。(jqgrid v 4.4.1)

各行に編集可能なセルが 1 つずつあるグリッドがあります。これらの編集可能なフィールドを更新するときに、フォーカスをグリッド内の次の有効化フィールドに移動して、行が選択されるようにします。

問題は、次のフォーカスされたフィールドが現在のビューポートにない場合、ブラウザー (クロムではない) 自体がそのレコードをビューポートにスクロールし、ユーザーがそれを見ることができることです。ただし、これは Chrome では発生しません (フォーカスされたレコードをビューポートにスクロールしません)。

さまざまなタイプの入力フィールドを作成する必要があるため、jqgrid カスタム フォーマッタを使用してこれらの編集可能なセルを作成します。

タイプがラジオまたはコンボ (選択) クロムの場合は正常に動作し、フォーカスされた要素を画面にスクロールしますが、タイプが「テキスト」の場合、これはクロムでは発生しません。そして、これには論理的な理由が見つかりませんでした。

これらは作成されたフィールドです。

無線:

<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);

後で、これがクロムの問題としてここにリストされていることがわかりました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 に答える