2010-01-20 2 views
14

У меня есть textarea, На каждом Введите нажата клавиша textarea Я хочу, чтобы новая строка начиналась с пули (*). Как это сделать?Введите ключевое слово в textarea

Нет jQuery пожалуйста.

Я могу отметить для Введите ключ, после этого!? Должен ли я получить всю ценность textarea и добавить * к ней и снова заполнить textarea?

+0

ли кто-нибудь из ответов помочь? –

+0

Следуя подсказке ниже, я добрался до решения. – sat

ответ

15

Вы могли бы сделать что-то вроде этого:

<body> 

<textarea id="txtArea" onkeypress="onTestChange();"></textarea> 

<script> 
function onTestChange() { 
    var key = window.event.keyCode; 

    // If the user has pressed enter 
    if (key === 13) { 
     document.getElementById("txtArea").value = document.getElementById("txtArea").value + "\n*"; 
     return false; 
    } 
    else { 
     return true; 
    } 
} 
</script> 

</body> 

Хотя новая линия подачи символов от нажатия введите все еще будет там, но его начало, чтобы получить то, что вы хотите.

+0

@williamtroup: Я включил форматирование кода для кода. –

+5

Это будет работать только в IE: 'window.event' не поддерживается в других браузерах. –

+0

Doug Crockford сказал мне сказать вам использовать === вместо ==. – MrBoJangles

7

Вам нужно рассмотреть случай, когда пользователь нажимает кнопку ввода в середине текста, а не только в конце. Я хотел бы предложить обнаружения клавиши ввода в keyup случае, как это было предложено, и использовать регулярное выражение, чтобы обеспечить значение, как вам требуется:

<textarea id="t" rows="4" cols="80"></textarea> 
<script type="text/javascript"> 
    function formatTextArea(textArea) { 
     textArea.value = textArea.value.replace(/(^|\r\n|\n)([^*]|$)/g, "$1*$2"); 
    } 

    window.onload = function() { 
     var textArea = document.getElementById("t"); 
     textArea.onkeyup = function(evt) { 
      evt = evt || window.event; 

      if (evt.keyCode == 13) { 
       formatTextArea(this); 
      } 
     }; 
    }; 
</script> 
3

Мой сценарий, когда пользователь попадет на клавишу ввода при вводе в TextArea я должен включать в себя линию break.I достигнуто это, используя приведенный ниже код ...... Надеюсь, что это может кому-то помогает ......

function CheckLength() 
{ 
    var keyCode = event.keyCode 
    if (keyCode == 13) 
    { 
     document.getElementById('ctl00_ContentPlaceHolder1_id_txt_Suggestions').value = document.getElementById('ctl00_ContentPlaceHolder1_id_txt_Suggestions').value + "\n<br>"; 
    } 
} 
+0

Вау, спасибо, позвольте мне проверить, хорошо выглядеть: D –

14

Просто добавьте чуть вашему текстовое поле.

onkeydown="if(event.keyCode == 13) return false;" 
+0

Возможно, вы можете расширить этот ответ. Кажется, это не работает. – swdev

1

Вы могли бы сделать что-то вроде этого:

$("#txtArea").on("keypress",function(e) { 
 
    var key = e.keyCode; 
 

 
    // If the user has pressed enter 
 
    if (key == 13) { 
 
     document.getElementById("txtArea").value =document.getElementById("txtArea").value + "\n"; 
 
     return false; 
 
    } 
 
    else { 
 
     return true; 
 
    } 
 
});
<textarea id="txtArea"></textarea>

Смежные вопросы