1

私は自分のWebベースのスプレッドシートに取り組んでいます。数式やその他のセル参照を検出しています。私がやりたい次のステップは...

関数バーをアクティブ(フォーカス)にしているときに、最初の文字が等号で、別のセルをクリックすると、そのセルを検出して数式バーに戻り、そのセルを挿入できるようにしたいと思います。ポジション。

私が抱えている問題は、セルに焦点を合わせずに、数式バーからセルへの移動を追跡する方法を理解することです。残りの部分には問題はありません。私はこれの大部分をJavaScriptで実行し、かなりのチャンクjQueryを使用しています。これを追跡するイベントはまだわかりません。

例として、私が取り組んでいるサイトは開発のためにロックされていますが、Googleスプレッドシートを作成したり、Excelを使用したりすると、私が話している例が表示されます。

数式バーはテキスト入力であり、すべてのセルはテーブル内にあり、テキスト入力です。

4

2 に答える 2

3

「マウスダウン」イベントを使用して、すぐに伝播しないようにします。これにより、フォーカスが発生しなくなり、テキスト入力を参照できるようになりますが、フォーカスを送信することはできません。

$(".cell input[type=text]").mousedown(function(event){

    if($("#formulaBar").val()[0] == "+"){

        event.stopImmediatePropagation();

        var cell = $(this).parent();
        var row = cell.attr("data-row");
        var col = cell.attr("data-column");

        //Do something with the formula bar
    }

});

HTMLマークアップは次のようになっていると思います。

<td data-row="0" data-column="0">
    <input type="text" />
</td>
于 2013-03-15T20:34:25.273 に答える
0

こんにちはこれは、focusOutとby and focusを使用して実行する方法のサンプルです。数式のテキストボックスが「=」で始まる場合は、[Enter]をクリックすると、セルの座標を追加して、数式のテキストボックスにフォーカスを戻すことができます。数式が完成し、それを保存することができます。

<html>
    <head>
    <script src="http://code.jquery.com/jquery-1.8.3.js"></script>
    </head>
    <body>
    <input type="text" id="txtFormular" style="width:100%"/>
    <br />
    <input type="text"  id="txtCell1" Coord="A1"  style="width:50px"/>
    <input type="text"  id="txtCell2" Coord="A2" style="width:50px"/> 
    <input type="text"  id="txtCell3" Coord="A3" style="width:50px"/>
    <input type="text"  id="txtCell4" Coord="A4" style="width:50px"/>
    <input type="text"  id="txtCell5" Coord="A5" style="width:50px"/>
    <input type="text"  id="txtCell6" Coord="A6" style="width:50px"/>
    <input type="text"  id="txtCell7" Coord="A7" style="width:50px"/>
    <script>
    $(function(){
        var formulaOn = false;
        $("#txtFormular").focusout(function(){
        if(this.value.indexOf("=") == 0)
        formulaOn = true
        else
        formulaOn = false;
        });
        $('#txtFormular').keypress(function (e) {
          if (e.which == 13) {
            //Save you formula
            this.value = "";
            this.blur();
          }
        });
        $("input[id^='txtCell']").focus(function(){
            if(formulaOn)
            {
                var txtFormulaVal = $("#txtFormular").val();
                $("#txtFormular").val(txtFormulaVal +$(this).attr("Coord"));
                $("#txtFormular").focus();
            }
        });
    });
    </script>
    </body>
    </html>
于 2013-03-15T20:59:18.810 に答える