0

テキストの変更をポストバックすることなく、テキストボックスのテキストをセッション変数に保存する方法はありますか?

4

1 に答える 1

2

これを 4 段階で行う必要があります。

1) テキストボックスに を追加onkeydown="textChanged(this.ID);"します

2)Javascriptを使用してテキストをキャプチャします

3) Web メソッドへの Ajax 呼び出しを開始する

4) Web メソッドを使用して、セッション変数を保存します。

だから、このようなもの:

テキストボックスで、Autopostback=false入力時にポストバックしないように設定します。

ユーザーが入力したときに起動される小さな Javascript 関数を自分で作成します。

この関数は、テキスト ボックスに接続されているタイマーを最初にクリアします。次に、1 秒後に別の関数を起動する別の関数を作成します。これにより、終了関数を頻繁に起動しようとしないことが保証されます。

 function textChanged(id) {
        var txtBox = document.getElementById(id);
        clearTimeout(txtBox.timer);
        txtBox.timer = setTimeout('SaveVariable()', 1000);
    };

1 秒後、メソッドは次のように呼び出します。

function SaveVariable(){
       // Do an ajax call in here and send your textbox value to a web method
        var t = // GetYourTextboxTextHere
        if (t != "") {
            $.ajax({
                type: "POST",
                url: "yourPage.aspx/SaveMyTextVar",
                data: "{'textToSave ': '" + escape(t) + "'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (msg) {
                    if (!msg.d) {
                        // it didn't save
                    } else {
                        // it saved just fine and dandy
                    };
                }
            });
        };
}

最後に、テキストをキャプチャするコード ビハインドの小さな Web メソッド

<ScriptMethod(ResponseFormat:=ResponseFormat.Json)> <Services.WebMethod()> _
Public Shared Function SaveMyTextVar(ByVal textToSave As String) As Boolean
         '' Save your variable to session here.
         '' return true or false
         '' you can capture the returning result in the AJAX that calls this method
End Function
于 2013-05-14T14:34:47.983 に答える