2

次のように、テーブルセル内にそれぞれ一連のテキスト入力があります。

<td class="tdTextInput">
    <input type="text" value="0" name="txt1_9_4_2" id="txt1_9_4_2" class="input-supermini">
</td>

ユーザーがセルまたは入力をクリックするたびに、入力内のすべてのコンテンツを自動的に選択する必要があります (スプレッドシート エディターのようなものです)。

これまでのところ、信頼できる古い Firefox でのみ成功するスクリプトを次に示します。

    //focus the textbox on td click
    $('.tdTextInput').mousedown(function ()
    {
        $(this).find('input').first().focus();
    });

    //select all text on focus
    $('.tdTextInput input').focus(function ()
    {
        //the data-selected attribute is used to prevent the 
        // autoselection to happen more than once per cell so that
        // two consecutive  clicks will allow the user to pinpoint the
        // cursor to a specific position
        var isSelected = $(this).attr('data-selected') == 'true';
        if (!isSelected) {
            $('input[data-selected]').removeAttr('data-selected');
            $(this).attr('data-selected', 'true');
            $(this).select();
        }
    });

    //prevent non-numeric values from being added
    $('.tdTextInput input').keydown(function (e)
    {
        CommonTools.IsNumeric(e);
    });

CommonTools.IsNumeric以下を参照してください:-(キーダウン機能は問題ではないため、おそらく関係ありません。完全を期すために質問に追加するだけです)

isNumeric = function (e)
{
    if(!(e.which>=48 && e.which<=57)) //numeric values only
            e.preventDefault();
}

これが FF と IE でのみ機能し、Chrome では機能しないのはなぜですか?

更新: ここでフィドルを作成しました: http://jsfiddle.net/dDc73/、ただし、フィドルの FF または IE でも機能しません。

詳細情報:セルをクリックすると、マウスのクリックを離すまですべてのテキストが選択されます。

4

2 に答える 2

1

ページがロードされたときに「名」入力フィールドが自動的にフォーカスされるようにします。

<form action="demo_form.asp">
  First name:<input type="text" name="fname" autofocus><br>
  Last name: <input type="text" name="lname"><br>
  <input type="submit">
</form> 
于 2013-06-07T09:33:46.013 に答える