2014-06-15 3 views
2

Я использую Jquery для удаления значения по умолчанию в HTML-входе в фокусе.Передача var между двумя функциями Javascript/Jquery?

Однако, если ничего не вводится на вход, я хочу, чтобы значение по умолчанию снова отображалось.

Чтобы попытаться сделать это, я создал:

$("#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 этой функции 2 focusout?

+1

Make 'valvalue' глобальный для обоих обработчиков событий – Diode

+1

Конечно, не«глобальное».. – user2864740

+0

http://stackoverflow.com/questions/500431/javascript-variable-scope – user2864740

ответ

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); 
     } 
    });  

}); 
+0

Спасибо, но оленья кожа, что просто означает, функция фокуса просто получит пустую величину valvalue (т. е. не значение, полученное в первой функции фокусировки)? – MeltingDog

+0

Нет «фокуса» без «фокуса» :) – Diode

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); 
      } 
     }); 

    }); 
1

В дополнение к другим ответам, вы можете использовать placeholder свойства, доступные в HTML5, если вы не хотите, чтобы поддерживать старые браузеры.

<input type="text" name="name" placeholder="Enter here"> 
Смежные вопросы