在两个Javascript / Jquery函数之间传递var?

时间:2014-06-15 05:24:32

标签: javascript jquery variables

我正在使用Jquery删除焦点上HTML输入中的默认值。

但是,如果输入中没有输入任何内容,我希望重新显示默认值。

为了尝试这样做,我创建了:

$( "#contact input" ).each(function( index ) {

        $(this).focus(function() {
          var valvalue = $(this).val();
          $(this).val(''); 
        });

        $(this).focusout(function() {
            var newvalvalue = $(this).val();
            if(newvalvalue == ''){
              $(this).val('', valvalue); 
            }
        });

    });

focus()函数工作正常,但valvalue函数无法获取变量focusout

有人知道将valvalue变量传递给第二个focusout函数的方法吗?

3 个答案:

答案 0 :(得分:4)

您需要通过两个事件处理程序使varvalue可见。可以通过在范围之外宣布它来完成。

$( "#contact input" ).each(function( index ) {

   var valvalue; /* both event handlers can see it here */

   $(this).focus(function() {
       valvalue = $(this).val();
       $(this).val(''); 
   });

   $(this).focusout(function() {
       var newvalvalue = $(this).val();
       if(newvalvalue == ''){
           $(this).val('', valvalue); 
       }
   });    

});

答案 1 :(得分:1)

您在JS中遇到关闭范围问题。尝试在函数外部定义varvalue,以便两个函数引用相同的变量。

$( "#contact input" ).each(function( index ) {
        var valvalue;
        $(this).focus(function() {
          valvalue = $(this).val();
          $(this).val(''); 
        });

        $(this).focusout(function() {
            var newvalvalue = $(this).val();
            if(newvalvalue == ''){
              $(this).val('', valvalue); 
            }
        });

    });

答案 2 :(得分:1)

除了其他答案之外,如果您不想支持旧浏览器,则可以使用HTML5中提供的placeholder属性。

<input type="text" name="name" placeholder="Enter here">