Сделать * только часть * текстового поля недоступным для редактирования - PullRequest
1 голос
/ 17 ноября 2010

Я хочу, чтобы пользователь мог настроить свою личную страницу URL на моем сайте, где значение текстового поля будет «example.com/username», но я хочу, чтобы «example.com/» было в текстовом поле, но недоступно для редактирования

Tumblr делает это, но я не могу понять, как: http://www.tumblr.com/register

Ответы [ 5 ]

7 голосов
/ 17 ноября 2010

Это код, указанный на странице Tumblr.

     <input type="text" class="text_field" style="padding:0px; border-width:0px; text-align:right; width:325px; background:transparent;"
    id="tumblelog_name" name="tumblelog[name]"
                                            onfocus="$('tumblelog_name_background').style.backgroundColor = '#f9f8e4'; $('tumblelog_name_background').style.color = ''" onblur="$('tumblelog_name_background').style.backgroundColor = ''; if($('tumblelog_name').value == '') 
{ $('tumblelog_name_background').style.color = '#c1cfdd' }"/>.tumblr.com

Как видите, дополнительный .tumblr.com вообще не является частью текстового поля ввода. Это div, стилизованный под поле ввода текста рядом с ним. Следовательно, создавая иллюзию неписываемого поля ввода текста.

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

На самом деле есть способ JavaScript сделать это без грязного CSS-хака.См. Сценарий на этой странице: http://aspdotnet -suresh.blogspot.com / 2010/11 / введение-здесь-я-объясню-как-to.html

0 голосов
/ 17 ноября 2010

нет способа сделать это.если вы посмотрите источник tumblr.com, то увидите, что «.tumblr.com» находится за пределами тега ввода.это просто простой стиль.Правая граница поля ввода = ничего.И добавьте одноуровневый узел, чтобы продолжить стилизацию.

 <input type="text" class="text_field" style="padding:0px; border-width:0px; text-align:right; width:325px; background:transparent;"
                        id="tumblelog_name" name="tumblelog[name]"
                                                    onfocus="$('tumblelog_name_background').style.backgroundColor = '#f9f8e4'; $('tumblelog_name_background').style.color = ''" onblur="$('tumblelog_name_background').style.backgroundColor = ''; if($('tumblelog_name').value == '') 
`enter code here`{ $('tumblelog_name_background').style.color = '#c1cfdd' }"
/>.tumblr.com 
0 голосов
/ 17 ноября 2010

Вы делаете это, проверяя значение вашего текстового поля onkeyup. В вашем обработчике событий вы можете убедиться, что текстовое поле говорит все, что вы хотите после того, как пользователь нажмет клавишу Если они удаляют твой текст, ты просто возвращаешь его туда после. Вы также хотели бы убедиться, что ваш обработчик также вызван onblur.

0 голосов
/ 17 ноября 2010

вы можете решить все с помощью css, это вход в сторону div, который содержит часть, которая не изменяется с тем же внешним видом.

HTML в вашем примере:

<div style="position:absolute; right: 8px; top: 4px; white-space: nowrap;">
     <input type="text" 
            class="text_field" style="padding:0px; border-width:0px; text-align:right; width:325px; background:transparent;" 
            id="tumblelog_name" 
            name="tumblelog[name]"     
            onfocus="$('tumblelog_name_background').style.backgroundColor = '#f9f8e4'; $('tumblelog_name_background').style.color = ''" 
            onblur="$('tumblelog_name_background').style.backgroundColor = ''; if($('tumblelog_name').value == '') { $('tumblelog_name_background').style.color = '#c1cfdd' }">.tumblr.com
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...