jQuery переместить курсор в конец ввода текста - PullRequest
1 голос
/ 01 сентября 2011

В настоящее время у меня есть поле ввода, которое имеет значение «Текущий веб-сайт»

Когда они щелкают по нему, я запускаю эту функцию:

function clearMeHttp(formfield) {
    if (formfield.defaultValue == formfield.value) {
        formfield.value = "http://";
    }
};

Это работает нормально, если вы щелкаете в поле, но если вы вкладываете в поле, оно просто подсвечивает слово "http://"", которое побеждает его назначение, если только они не нажимают клавишу со стрелкой вправо, которой я хочу избежать.

Спасибо!

Вот другой код: <input onblur="restoreMe(this)" onfocus="clearMeHttp(this)" type="text" class="fade" name="website" value="Current website">

restoreMe просто постепенно возвращает значение по умолчанию с помощью jquery

Ответы [ 3 ]

4 голосов
/ 01 сентября 2011

Я немного изменил ваш код, но вместо встроенного HTML использую события jquery.

Полный использованный скрипт:

var defaultVal = 'Current website';
$(function() {

    $('.urlCheck').focus(function(e) {
        if ($(this).val() == "http://" || $(this).val() == '' || $(this).val() == defaultVal) {
            $(this).val('http://');
            $(this).select(false);

        }
    });

    $('.urlCheck').keyup(function(e) {
        if ($(this).val() == "http://" || $(this).val() == '' || $(this).val() == defaultVal) {
            $(this).val('http://');
        }
    });

    $('.urlCheck').blur(function(e) {
        $(this).val(defaultVal);
    });

});

Рабочая ссылка: http://jsfiddle.net/29gks/6/

Событие keyup является переопределением для Chrome и Safari

0 голосов
/ 01 сентября 2011

Вам необходимо использовать setSelectionRange() (или selectionStart и selectionEnd) в большинстве браузеров и некоторые TextRange махинации в IE <9. </p>

Вот мой предыдущий ответ на тот же вопрос: Как поместить курсор в конец текста в текстовой области, когда он вставлен в

0 голосов
/ 01 сентября 2011

Вы не использовали jquery, поэтому я следую за вами.

script:

function clearMeHttp(formfield) {
    if (formfield.defaultValue == formfield.value) { 
         formfield.value="";        
         formfield.style.padding="0 0 0 40";
         document.getElementById("http").style.display="block";
    }
}; 

html:

<label id="http" style="float:left;position:absolute;display:none;">http://</label>
<input onblur="restoreMe(this)" onfocus="clearMeHttp(this)" type="text" class="fade" name="website" value="Current website">

Это удовлетворяет вашим требованиям, но может и не бытькак хочешь

...