0

テーブルのフィルタリングを可能にするために、テキスト ボックスの値をバックアップしたいと考えています。ユーザーがバックスペースを押してテキストボックスを空のままにすると、以前にバックアップした以前の値を入れたい:

vbackup は、テキスト ボックスの初期値を保存します。これは、jsfiddle の「hello」です。

$('#btn').click(function () {
    $('#mydiv').slideToggle('fast', function () {
        // I SAVE THE TEXTBOX VALUE SO THAT I CAN
        // GET IT BACK AFTERWARDS
        var vbackup = $('#txtbox').val();
        alert(vbackup);
        if ($(this).is(":visible")) {
            // NO MATTERS...
        }
        else {
            // IF TEXTBOX VALUE IS EMPTY I GET THE PREVIOUS
            // VALUE BACK
            if ($('#txtbox').val() == '') {
                // VBACKUP IS EMPTY !!
                alert(vbackup );
                $('#txtbox').val(vbackup );
            }
        }
    });

    return false;
});

以前にバックアップしたため、vbackup 変​​数がテキストボックスの実際の値と一致する理由がわかりません。

http://jsfiddle.net/QFQ5k/16/

手順:

  1. ボタンを1回押す
  2. テキストボックスを空にする
  3. ボタンをもう一度押します。これで、「hello」という単語が変数からテキスト ボックスに返されます。アラートは、変数の値が上書きされたことを示しています。
4

3 に答える 3

1

更新されたhttp://jsfiddle.net/QFQ5k/21/を参照してください

$('#mydiv').hide();
var vbackup = $('#txtbox').val();
$('#btn').click(function () {
        $('#mydiv').slideToggle('fast', function () {

            alert(vbackup);
            if ($(this).is(":visible")) {

            }
            else {
                if ($('#txtbox').val() == '') {
                    // In this alert vbackup
                    // is empty !!
                     $('#txtbox').val(vbackup );

                }
                else 
                    vbackup = $('#txtbox').val();
            }
        });

        return false;
    });
于 2012-11-15T12:04:52.477 に答える
0

このようなもの (html ノードのプロパティに値を格納する) も問題ないかもしれません。さらに、グローバル変数を使用しません (yay)。

// this is equal to #mydiv
this.vbackup = $("#txtbox").val()

ここでデモをチェックアウト: http://jsfiddle.net/QFQ5k/25/

于 2012-11-15T12:08:58.987 に答える
0
$("#mydiv").hide();

$('#btn').click(function () {
    $('#mydiv').slideToggle('fast', function () {
        var value = $('#txtbox').val() || $(this).data("value");

        if ( !$(this).is(":visible") && !$('#txtbox').val() ) {
            $('#txtbox').val( value );
        }

        $(this).data("value", value);
    });

    return false;
});

http://jsfiddle.net/QFQ5k/26/

于 2012-11-15T12:34:20.830 に答える