2016-12-26 3 views
-1

хэштегом реализации на стороне клиента с помощью JQuery & JavaScript

#input { 
 
    -moz-appearance: textfield-multiline; 
 
    -webkit-appearance: textarea; 
 
    border: 1px solid gray; 
 
    font: medium -moz-fixed; 
 
    font: -webkit-small-control; 
 
    height: 28px; 
 
    overflow: auto; 
 
    padding: 2px; 
 
    resize: both; 
 
    width: 400px; 
 
}
<div id="input" placeholder="testing" contenteditable>listening musiC#music</div>

Я реализует хэштегом функцию (например: - #music, #dance).

если пользователь вводит символ '#', я хочу нажать поиск Api.

для примера: пользователь Статус обновления «прослушивания музыки #musiC#dance давайте рок»

здесь «прослушивания музыки, давайте рок» обычный текст и «#music», «#dance» являются хэштегом.

всякий раз, когда пользователь вводит «#M» после «прослушивания музыки», мне нужно ударить апи как «/ поиск? Д = т»

вар searchData = [ «музыка», «манго», «знаки» , "moon"]

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

всякий раз, когда пользователь вводит "#d" после "#music", мне нужно попасть апи, как "/ поиск? Д = д"

вар searchData = [ "опасность", "танец", "папа" ]

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

«давай рок» - это обычный текст.

дифференциации цвета «хэштегом» и поиск только тогда, когда пользователь вводит «#»

+0

чем проблема тогда? – Vikrant

+0

Если вы видите, я искал «#m», если бы я выбрал «музыку», в текстовом поле появится значение «#mmusic» («#m» + «music»), и я хочу выделить слово hashtag. –

+0

, если вы видите твиттер, мне нужны те же функции, что и «Tweet box» –

ответ

0

Я думаю, что это работает для вас

var inputData = "listening musiC#musiC#dance let's rock"; 
var arrayData = inputData.split(" "); 

arrayData.forEach(function(entry) { 
    if(entry.startsWith(("#music") || ("#etc"))){ 
    // hit your api 
    } 
}); 
+0

пользователь вводил «музыку для прослушивания», а пользователь вводил «#m», «#mu» или т. Д., Как только пользователь выбрал любое предложение, которое я хочу «#m »или« #mu »или etc станут« #selectedItem », для меня это похоже на« #mselectedItem »или« #muselectedItem » , и этот тег должен быть разного цвета или любого другого (css). –

+0

Вы можете указать его, если условия и вы можете его перенести. –

1

Вы можете связать keyup событие к введенному для проверки на hashtag стартовые слова. Когда совпадение найдено, вы вызываете свой AJAX. Как так:

var ajax; 

$('#input').keyup(function() { 

    var tags = $(this).val().split(' '); 
    var lastTag = tags.pop(); 

    if (/#\S+\b/.test(lastTag)) { 
     // abort previous ajax if still running 
     if (ajax && ajax.abort && ajax.readyState !== 4) 
      ajax.abort(); 

     // hit your search api 
     ajax = $.getJson('/search', { q: lastTag }) 
       .done(function (data) { 
        // manage your response data here 
        // show suggestions and handle picking one 
       }); 
    } 
}); 

EDIT: Полностью переделанный логики, гораздо более простой и компактный

+0

Hi rabelloo, Спасибо за ваш ответ, я пробовал ваш код, но всегда «ajax» подходит к неопределенному и первому значению «currentHashtagIndex» всегда «-1». Можете ли вы перепроверить свой скрипт и обновить его. –

+0

Да, моя ошибка, реорганизовал код во время записи и оставил переменные внутри области событий «keypress». Ajax всегда неопределен, потому что код никогда не получал $ .getJson благодаря предыдущей ошибке.Попробуйте обновленный код – rabelloo

+0

Я также понял, что вам не нужна переменная 'search', вы можете использовать' currentHashtagIndex'. Обновленный код, чтобы отразить это, – rabelloo

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