1

我正在将 jquery 用于输入占位符的跨浏览器解决方案,但我不明白如何设置全局变量,$(this)以便我可以在这两个部分函数的第二部分中使用它。我首先获取输入的值并将其存储为,$value但我需要在第二个函数中再次使用它来用它替换空值。我该怎么做呢?我应该提到的是,这需要以一种形式处理多个文本输入。

       $(document).ready( function() {
        $('input[type=text]')
         .on('focus', function(){
            var $this = $(this);
            var $value = $(this).val();
            globalVar = $value;
            if($this.val() == $value){
             $this.val('');
            }
         })
         .on('blur', function(){
            var $this = $(this);
            if($this.val() == ''){
             $this.val($value);
            }
         });
       });    
4

4 回答 4

4

您可以使用这两个函数范围之外的变量.. 但最好将其data用作存储位置:

$(document).ready( function() {
        $('input[type=text]')
         .on('focus', function(){
            var $this = $(this);
            if ($this.val()) {
              $this.data('myval', $this.val());
            }
            $this.val('');
         })
         .on('blur', function(){
            var $this = $(this);
            if($this.val() == ''){
             $this.val($this.data('myval'));
            }
         });
});     

编辑:

添加了这个:

   if ($this.val()) {
     $this.data('myval', $this.val());
   }
于 2012-09-11T05:35:28.060 回答
2

您必须$value在两个函数之外声明,使用所谓的闭包。这样,$value 在同一调用中创建的两个函数之间共享ready。(备注:由于ready很可能只调用一次,您也可以使用全局变量。但是,这可能会污染全局命名空间,所以我宁愿不这样做。)

$(document).ready( function() {
        var $value;
        $('input[type=text]')
         .on('focus', function(){
            var $this = $(this);
            $value = $(this).val();
            globalVar = $value;
            if($this.val() == $value){
             $this.val('');
            }
         })
         .on('blur', function(){
            var $this = $(this);
            if($this.val() == ''){
             $this.val($value);
            }
         });
       });    

请注意,如果有多个'input[type=text]元素,这将不会(或只是偶然)产生正确的结果,因为所有这些元素将共享相同的$value变量。在这种情况下,您应该使用this.data其他帖子中提到的解决方案。

于 2012-09-11T05:34:23.477 回答
0

试试这个,

var $value;
$(document).ready( function() {
        $('input[type=text]')
         .on('focus', function(){
            var $this = $(this);
            $value = $(this).val();
            globalVar = $value;
            if($this.val() == $value){
             $this.val('');
            }
         })
         .on('blur', function(){
            var $this = $(this);
            if($this.val() == ''){
             $this.val($value);
            }
         });
       });    
于 2012-09-11T05:33:08.233 回答
0

在函数外部定义变量,然后为其分配所需的值。

var $value = null;
$(document).ready( function() {
        $('input[type=text]')
         .on('focus', function(){
            var $this = $(this);
            $value = $(this).val();
            globalVar = $value;
            if($this.val() == $value){
             $this.val('');
            }
         })
         .on('blur', function(){
            var $this = $(this);
            if($this.val() == ''){
             $this.val($value);
            }
         });
       });    
于 2012-09-11T05:33:50.463 回答