Очистить значение TEXTAREA после клика (onFocus) - PullRequest
5 голосов
/ 17 февраля 2011

Я сейчас использую ..

onfocus="this.value=''; return false;"

, чтобы очистить значение в моей текстовой области для оставления комментариев. Однако, когда вы нажимаете, чтобы ввести комментарий и вводить несколько вещей, если вы должны были щелкнуть за пределами поля, чтобы, возможно, прочитать что-то еще на странице, а затем вернуться к своему комментарию, снова щелкнув внутри поля textarea, это очистит ваш текущий ввод. .

Есть ли в любом случае очистить текстовое поле при первом щелчке, просто чтобы очистить значение по умолчанию, а не остальные щелчки для оставшейся части сеанса страницы браузера?

Ответы [ 9 ]

8 голосов
/ 17 февраля 2011

Лучше поместить инструкции в метку метки, расположить ее над текстовой областью, а затем скрыть или показать, если текстовая область сфокусирована. Причина этого в том, что ваша текстовая область будет заполнена инструкциями, и они могут быть отправлены, если они находятся внутри формы.

Но, решите свою проблему, все, что вам нужно сделать, это:

onfocus="if(this.value== "your initial text"){this.value=''}; return false;"
3 голосов
/ 09 октября 2012

Я думаю, что это хорошая привычка отделять логику от контента. Итак, используя jQuery (мы все используем jQuery, не так ли?) Вы можете сделать:

$(document).ready(function() {
    var _bCleared = false;
    $('form textarea').each(function()
    {
        var _oSelf = $(this);

        _oSelf.data('bCleared', false);
        _oSelf.click(function()
        {
            if (!_oSelf.data('bCleared'))
            {
                _oSelf.val('');
                _oSelf.data('bCleared', true);
            }
        });
    });
});

Это будет повторять все текстовые области на сайте и сохранять логическое значение об их чистом состоянии в отдельной привязке данных. Событие onclick также обрабатывается отдельно для каждой текстовой области, поэтому вы можете иметь несколько очисток текстовой области / текстовой области на одной странице и не нужно разбрызгивать Javascript на ваш HTML.

1 голос
/ 10 июля 2013

Вместо этого используйте HTML5 s placeholder и используйте плагин jquery для старых браузеров.

Пример выполнения здесь: http://jsfiddle.net/dream2unite/xq2Cx/

<input type="text" name="email" id="email" placeholder="name@email.com">

должен сопровождаться следующим скриптом:

$('input[placeholder], textarea[placeholder]').placeholder();

Когда вы вводите электронное письмо, ваш текст (заполнитель) исчезнет, ​​только после удаления вашего письма текст (заполнитель) снова появится.

И, наконец, очевидно хороший пример плагина jquery для заполнителей: http://mathiasbynens.be/demo/placeholder

1 голос
/ 23 июля 2012

Я знаю, что уже поздно, но всем, у кого возникла эта проблема, я считаю, что самый простой ответ:

onfocus="this.value=''; this.onfocus='';"

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

1 голос
/ 17 февраля 2011
<script type="text/javascript">
function clearOnInitialFocus ( fieldName ) {
   var clearedOnce = false;
   document.getElementById( fieldName ).onfocus = (function () {
    if (clearedOnce == false) {
      this.value = '';
      clearedOnce = true;
    }
  })
}
window.onload = function() { clearOnInitialFocus('myfield');
</script>

Источник: http://snipplr.com/view/2206/clear-form-field-on-first-focus/

1 голос
/ 17 февраля 2011

это поможет

function clearTA {
   if(this.value != "type here") {
      this.value = ''; 
      return false;
   }
}

и атрибут hfml onfocus

...onfocus="clearTA()"..
0 голосов
/ 17 февраля 2011

Итак, я так понимаю, у вас есть предварительно заполненное значение, например «Введите текст здесь»? Попробуйте добавить этот JavaScript:

    function clearText(textarea,prefilled){
        if(textarea.value==prefilled)
            textarea.value="";
        return false;
    }

Тогда ваш вклад должен быть: Введите свой текст здесь

Это должно помочь вам начать ...

0 голосов
/ 17 февраля 2011

Вы можете использовать глобальную страницу вар.

В элементе script над элементом

var tracker = {};

Позже ...

<textarea name="a" onfocus="if(!tracker[this.name]) { tracker[this.name]=true; this.value=''; } return false;">Placeholder text</textarea>
0 голосов
/ 17 февраля 2011

Объявите переменную clearedOnce в JavaScript, которая является ложной. В вашем onfocus, проверьте эту переменную. Если значение равно false, установите для него значение true и очистите текстовую область. Все последующие клики ничего не сделают. Код:

onfocus='if (!clearedOnce) { this.value = ''; clearedOnce = true;} return false;'
...