Доброго времени суток.
Играл кто в SAMP (San Andreas Multiplayer), да и не только там есть такое понятие как команды, но как пример возьму именно эту игру.
В общем, в чате, при вводе текста типо /cmd
или /cmd param
- происходит какое-то действие, в зависимости от команды.
Хочу такое же реализовать в обычном input.
Нет, не вот таким вот вариантом if($(input).val() == '/cmd')
..
Прям как там, т.е. если input.val()
начинается с / (слеша)
, то определяем какая команда идёт после слеша и есть ли параметры.
Как такое можно реализовать? И как будет грамотнее?
UPD 12 минут спустя
Накатал вот такое вот:
$('.s').on('click',function(){
var inputVal = $('.c').val();
if(inputVal[0]=='/') {
inputVal = inputVal.slice(1);
console.info('cmd? true');
cmdInput(inputVal.split(' '));
} else console.info('cmd? false');
});
function cmdInput(arr) {
let cmd = arr[0], param = arr[1];
console.info('\ncmd: '+cmd+'; \nparam: '+param+';');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input class="c" type="text" value="">
<input class="s" type="button" value="click">
В общем я сделал.
В сниппете работают команды /hello
и /stack
.
$('#search').bind('submit', function(){
let thisVar = $(this).find('input[name="q"]').val();
if(thisVar[0]=='/') {
let str = thisVar.slice(1), cmd = str.split(' ', 1).toString(), param = str.split(' ').slice(1).join(' ');
// cmd list
if(cmd=='hello') alert('Hello World!');
else if(cmd=='stack') {
if(param=='overflow') alert('Приветствую на StackOverflow');
else alert('Попробуйте /stack overflow');
}
// not cmd
else alert('Такой команды не существует');
$(this).find('input[name="q"]').val('');
return false;
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="search" action="/search" method="get">
<input type="text" name="q" placeholder="Search" value="" autocomplete="off">
<input type="submit" value="Search">
</form>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Всем привет! Использую Prism c Unity iocЕсть две модели-представления