如果字符串已经包含OnChange,则不要追加

时间:2019-02-14 10:54:32

标签: javascript html dom

我在具有文本框的列上有一个javascript OnChange函数,可捕获列中每一行的名称。我将所有名称附加并存储在变量中。 现在,假设用户再次单击相同的文本框,我不想再次添加该名称。

ResourceNotFoundError

我的输入文字:

var AppendedString = null;

function onChangeTest(textbox) {
  AppendedString = AppendedString;
  AppendedString = AppendedString + ';' + textbox.name;
  // this gives null;txt_2_4;txt_2_6;txt_3_4;txt_2_4 and so on..and I don't want to append same name again , here it's txt_2_4

}

3 个答案:

答案 0 :(得分:1)

这些行似乎具有唯一的名称。 您可以简单地检查AppendedString是否已经包含该名称:

var AppendedString=''

function onChangeTest(textbox) {
  if (!AppendedString.includes(textbox.name)) {
    AppendedString += ';' + textbox.name;
  }
}

Codepen Link

您不能将AppendedString初始化为null,否则includes()方法将不可用

否则,您可以为每行赋予一个唯一的ID,并将已被用户单击的ID存储在数组中。

var AppendedString = '';
var clickedRows = [];

function onChangeTest(textbox) {
      if (!clickedRows.includes(textbox.id)) {
        AppendedString += ';' + textbox.name;
        clickedRows.push(textbox.id)
      }
    }

答案 1 :(得分:0)

var arr = [];
$("input[type='text']").on("click", function() {
  var nowS = ($(this).attr('name'));
  if (!(arr.indexOf(nowS) > -1)) {
    arr.push(nowS)
  }
  console.log(arr)
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="m1" name="lbl1">
<input type="text" id="m2" name="lbl2">
<input type="text" id="m3" name="lbl3">

有点类似于您的需求,

var arr = [];
$("input[type='text']").on("click", function() {
  var nowS = ($(this).attr('name'));
  if (!arr.includes(nowS)) {
    arr.push(nowS)
  }
  console.log(arr)
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="m1" name="lbl1">
<input type="text" id="m2" name="lbl2">
<input type="text" id="m3" name="lbl3">

答案 2 :(得分:0)

您可以添加标记文本框,如果再次单击它,则将其忽略。就像使用jquery一样,您可以执行以下操作:

function onChangeTest(textbox) {
    AppendedString = AppendedString;
    if (!textbox.hasClass("clicked")){
        AppendedString = AppendedString + ';' + textbox.name;
        textbox.AddClass("clicked");
    }
 }