2014-12-20 2 views
-4

У меня есть форма на странице моего HTML-документа, и мне было интересно, есть ли способ в javascript или jquery, чтобы добавить hashtag (#), в начале каждого слова (там может быть больше, чем вошел одно слово)Добавить hashtag (#) в начало каждого слова в форме HTML 5

+1

Какие слова в поле формы? В вашем документе, что вы пробовали? –

+0

Нагрузка на страницу или когда пользователь печатает? – putvande

+0

Хештег - это целое слово с префиксом '#'. '#' - знак фунта/числа. – loganfsmyth

ответ

1

Вы можете добиться этого с KeyUp событие Listener и некоторые замены и IndexOf:

<input id="test"> 

<script> 
var a = document.getElementById('test'); 
a.addEventListener('keyup',addthis); 

function addthis() { 
    b = a.value.replace('#',''); 
    a.value = '#'+b 

    if (a.value.indexOf(' ')) 
    { 
    a.value = a.value.replace(' ','#'); 
    } 

} 
</script> 

DEMO

+0

baao, который отлично работает! Есть ли способ остановить его от добавления хэштегов в пробелы? – RubberDucky4444

+0

@ user2640633 попробуйте это, это немного багги, но вроде работы http://jsfiddle.net/hotfwzcL/1/ – baao

+0

Джонатан Лоновски ~ есть много несвязанных Jquery, которые привязаны к этой форме. Я мог легко разместить часть HTML, но у меня есть тумблер, который при переключении меняет текст-заполнитель внутри формы. Я признаю, что я знаю очень мало javascript и jquery .... Мой учитель помогает мне с большей частью, и я пытаюсь прочитать его код и попытаться понять его, поскольку он идет – RubberDucky4444

1

Это делает то, что вы хотите и перемещает курсор в конец поля для загрузки.

Обновление: Использовано keydown insteead, чтобы отфильтровать несколько мест.

function addHash(event) { 
    if (event.keyCode === 32 && event.target.value.length) { 
     event.preventDefault(); 

     var elem = event.target, 
     val = elem.value; 

     if (val.slice(-1) !== '#') { 
      elem.value += ' #'; 
     } 
    } else if (!event.target.value.length) { 
     if (event.keyCode === 32) { 
      event.preventDefault(); 
     } 
     event.target.value = '#'; 
    } 
} 

Я проверил скрипку бао, чтобы проверить.

DEMO

+0

Ницца! Но если вы дважды нажмете пробел, это тоже даст вам лишнее #. – baao

+0

@ RubberDucky4444 Пожалуйста, повторите проверку кода. Теперь он добавляет # к началу, и делает все, что вы хотите. Удерживание пространства также не нарушает его (он нарушает baao's: попытайтесь удержать место в своем коде). Если вы хотите удалить пробелы, просто удалите пробел под '#' в 'elem.value + = '#';'. – Makaze

0

вы можете добиться этого с помощью JQuery OnChange eventlistner.

сценарий ниже получает значение входного поля и разбивает каждое слово на пробел "", что делает его массивом. затем он петляет через массив слов, и если слово не имеет «#» в начале слова, оно добавляет его. то он заменяет старое значение из поля ввода новым.

$('#input').on('change', function(e){ 
    var input_string = $(this).val(); 
    var words = input_string.split(" "); 
    var output = ""; 
    console.log(words); 
    $.each(words , function(i, word){ 
     console.log(word); 
     if(word.substr(0, 1) == "#") 
     {    
      output += word + " ";   
     } 
     else 
     { 
      output += "#" + word + " ";  
     } 
     console.log(output); 
    }); 

    $(this).val(output); 
}); 

http://jsfiddle.net/dgs9kapc/6/

+0

Макази, который отлично работает, за исключением того, что он не добавляет # к первому слову! Спасибо за помощь!!!! – RubberDucky4444

+0

У меня есть форматирование значения для вывода. Вот почему первое слово не получило #. Я обновил скрипку и ссылку. – firevirus

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