调用jQuery .val()时的javascript别名。为什么?

时间:2012-11-15 11:58:02

标签: javascript jquery aliasing

我想备份文本框值以允许表格过滤。当用户按退格键并将文本框保留为空时,我想放置之前备份的先前值:

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. 按一下按钮
  2. 清空文本框
  3. 再次按下按钮。现在,“hello”字应该从变量返回到文本框。警报告诉我变量中的值已被覆盖。

3 个答案:

答案 0 :(得分: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;
    });

答案 1 :(得分:0)

这样的事情(将值存储在html节点的属性中)也可以。另外,它没有使用全局变量(yay)。

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

在此处查看演示:http://jsfiddle.net/QFQ5k/25/

答案 2 :(得分: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/