Добавление нескольких строк в поле ввода с помощью нескольких кнопок

0

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

Также хотел бы удалить строку, если одна и та же кнопка будет повторно нажата

Пожалуйста, см. Код ниже и скрипку - 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>
Теги:
forms
input

2 ответа

1
Лучший ответ

Сначала получите значение из существующего ввода.

Затем проверьте, существует ли текущий текст. Если да, то избавитесь от него.

Затем добавьте текущий текст в конец.

$("button").on('click', function() {
    var text = $(this).text() +',';
    $('input').val(function(_, val) {
        if (val.match(text)) {
            return val.replace(text, '');
        }
        return val + text;
    });
});

jsFiddle

  • 0
    Закрыть, но не хочу, чтобы слово появлялось снова, если повторное нажатие
  • 0
    @Kulerbox: Ах, я неправильно понял эту часть. Посмотри еще раз. Должен работать, спросите, что вы ожидаете сейчас.
Показать ещё 1 комментарий
0

Добавьте значение, которое уже находится на входе, в противном случае оно просто заменяет все, что есть, с новым значением

$("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(',');
    });
});

FIDDLE

  • 0
    Спасибо, отлично работает, но как удалить значение при повторном нажатии?
  • 0
    @Kulerbox - Ах, хорошо! Обновил ответ и с этим.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню