onFocus и onBlur - PullRequest
       60

onFocus и onBlur

2 голосов
/ 20 декабря 2010

По некоторым причинам свойства onblur и onfocus не работают.Я правильно их определяю?

var replyTxt = document.createElement("input");
    replyTxt.id="replyTxt";
    replyTxt.type="text";
    replyTxt.value="Write a reply";

    replyTxt.onfocus = function(){if(replyTxt.value==replyTxt.defaultValue) replyTxt.value='';};
    replyTxt.onblur= function(){if(replyTxt.value=='') replyTxt.value=replyTxt.defaultValue;};

Я также пытался поставить "function(){if(replyTxt.value==replyTxt.defaultValue) replyTxt.value='';}" в кавычки

Ответы [ 5 ]

2 голосов
/ 20 декабря 2010

События работают - так что может быть проблема с вашей логикой ...

if(replyTxt.value==replyTxt.defaultValue) replyTxt.value='';

Где вы устанавливаете replyTxt.defaultValue? В вашем примере вы этого не сделаете - поэтому логика никогда не сработает. Попробуйте это ...

var replyTxtDefaultText = "Write a reply";
var replyTxt = document.createElement("input");
    replyTxt.id="replyTxt";
    replyTxt.type="text";
    replyTxt.value=replyTxtDefaultText;

    replyTxt.onfocus = function(){if(replyTxt.value==replyTxtDefaultText) replyTxt.value='';};
    replyTxt.onblur= function(){if(replyTxt.value=='') replyTxt.value=replyTxtDefaultText;};
1 голос
/ 20 декабря 2010

Просто подсказка: попробуйте заменить replyTxt на this в функциях событий.

0 голосов
/ 12 ноября 2014

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

0 голосов
/ 20 декабря 2010

И убедитесь, что вы добавляете это к чему-либо.

<form id="x">
</form>
<script>
window.onload=function() {
  var replyTxt = document.createElement("input");
  replyTxt.id="replyTxt";
  replyTxt.type="text";
  replyTxt.value=replyTxt.defaultValue="Write a reply";
  replyTxt.onfocus = function(){if(this.value==this.defaultValue) this.value='';};
  replyTxt.onblur= function(){if(this.value=='') this.value=this.defaultValue;};

  document.getElementById('x').appendChild(replyTxt);
}
</script>
0 голосов
/ 20 декабря 2010

попробуй setAttribute.больше информации о функции смотрите по этой ссылке

var replyTxt = document.createElement("input");
replyTxt.setAttribute('onFocus', 'focusFunction()');

function focusFunction()
{
   if(replyTxt.value==replyTxtDefaultText) 
      replyTxt.value='';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...