2012-03-14 2 views
5

В основном мне нужно создать текстовое поле, которое ограничено символом, но в начале будет иметь одно слово, которое они не могут изменить.Как заблокировать первое слово текстового поля?

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

Я думал, что могу создать JQuery-функцию, используя blur(), чтобы предотвратить обратное перемещение пользователя, но мне также необходимо запретить им выбирать это слово и удалять его.

UPDATE Я написал этот JQuery, который, кажется, отлично работает! Однако мне нравится решение ниже, так как оно не требует Javascript.

<script type="text/javascript"> 
    var $el = $("textarea#message_create_body"); 
    $el.data('oldVal', $el.val()); 

    $el.bind('keydown keyup keypress', function() { 
     var header = "Header: "; 
     var $this = $(this); 
     $this.data('newVal', $this.val()); 
     var newValue = $this.data("newVal"); 
     var oldValue = $this.data("oldVal"); 

     // Check to make sure header not removed 
     if (!(newValue.substr(0, header.length) === header)) { 
      $(this).val(oldValue); 
     } else { 
      $(this).data('oldVal', $(this).val()); 
     } 
    }); 
</script> 

ответ

8

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

Вы можете посмотреть, как здесь работает: http://jsfiddle.net/FLEA3/.

+0

Это выглядит великолепно! Я буду использовать ваш метод. –

3

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

+0

Я думал о том, чтобы поместить некоторый текстовый элемент поверх текстового поля, а затем продвигаю курсор для достижения того же эффекта. Есть ли способ продвинуть курсор только для первой строки? –

1

это не было бы лучше, если вы просто предупредить пользователя о том, что он вводит в текстовое поле будет представлен с «префиксом», а затем

  • показать префикс в качестве метки перед текстовой
  • добавить префикс к введенному тексту перед отправкой
Смежные вопросы