Я пытаюсь добавить несколько строк в поле ввода с помощью нескольких кнопок. Проблема в том, что каждый раз, когда я нажимаю новую кнопку, она заменяет/переопределяет предыдущую вставку, поэтому я не могу добавить строки только для замены.
Также хотел бы удалить строку, если одна и та же кнопка будет повторно нажата
Пожалуйста, см. Код ниже и скрипку - http://jsfiddle.net/2khzX/
<input type="text" id="text" style="width: 450px;" />
<br />
<button>Hello</button>
<button>Yes</button>
<button>No</button>
<button>Maybe</button>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"> </script>
<script>
$("button").on('click', function() {
var text = $(this).text();
$("input").val(text + ',');
});
</script>
Сначала получите значение из существующего ввода.
Затем проверьте, существует ли текущий текст. Если да, то избавитесь от него.
Затем добавьте текущий текст в конец.
$("button").on('click', function() {
var text = $(this).text() +',';
$('input').val(function(_, val) {
if (val.match(text)) {
return val.replace(text, '');
}
return val + text;
});
});
Добавьте значение, которое уже находится на входе, в противном случае оно просто заменяет все, что есть, с новым значением
$("button").on('click', function() {
var text = $(this).text();
$("input").val(function(_, val) {
var arr = val.split(','),
pos = $.inArray(text, arr);
pos != -1 ? arr.splice(pos, 1) : arr.push(text);
return arr.filter(function(n) {
return n.trim().length
}).join(',');
});
});