jQuery从输入字符串中添加/删除文本

时间:2019-05-12 13:15:51

标签: javascript jquery html string

我有一个将文本添加到输入框中的功能。基本上,您单击一个div,它就会通过onclick =“ addvalue(” Name“)”

激活该功能。
function addvalue(newdate){
    var input = $("#datestobeexcluded");
    input.val(input.val()+","+newdate);

};

但是我真正需要做的是检查输入值中的字符串, 如果不存在,则添加文本,然后添加,如果字符串中已经存在文本,则将其删除。

我现在在使用jquery时表现不佳。预先谢谢你

3 个答案:

答案 0 :(得分:2)

var input = $("#datestobeexcluded");

if(input.val().search(newdate) >= 0)
{
    input.val(input.val().replace(newdate,''));
}
else
{
    input.val(input.val()+","+newdate);
}

如果您多次出现:

input.val(input.val().replace(/newdate/g,''));

答案 1 :(得分:1)

您可以将includesRegExp一起使用:

var input = $("#datetobeexcluded");
input.val(input.val().includes(newdate) ? input.val().replace(new RegExp(newdate, "g"), "") : `${input.val()},${newdate}`);

答案 2 :(得分:1)

您可以使用jQuery样式的点击侦听器替换点击绑定中的内联。

然后您可以使用下一个代码。

const $input = $('#your-input')
$('.extra-option').click(function() {
  const inputString = $input.val()
  const content = inputString ? inputString.split(',') : []
  const stringToAdd = $(this).html()
  const stringIndex = content.indexOf(stringToAdd)
  if (stringIndex === -1) {
    content.push(stringToAdd)
  } else {
    content.splice(stringIndex, 1)
  }
  $input.val(content.join(','))
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="your-input" type="text" />
<div class="extra-option">Name</div>
<div class="extra-option">Company</div>
<div class="extra-option">Address</div>

首先,您需要弄清楚如何提供单击的元素值。您的方法肯定是错误的,因为您需要在单击时绑定函数,而返回的是undefined。出于测试目的,我使用innerText。

第二步,您需要检查您的字符串是否包含单击的div字符串。为了简化此逻辑,我使用了按定界符分割,然后使用条目数组进行管理。

最后一步,您需要更新输入值。

我想都是这样。

如果您有任何问题,请告诉我。