当前位置: 代码迷 >> JavaScript >> 如果字符串已经包含OnChange,则不要追加
  详细解决方案

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

热度:88   发布时间:2023-06-13 12:19:36.0

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

 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 } 

我的输入文字:

 <input type="text" name="txt_<%=l_profileid %>_<%=l_processstepsequence%>" value="<%= l_comments%>" onfocus="this.oldvalue = this.value;" onchange="onChangeTest(this);this.oldvalue = this.value;"> 

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

var AppendedString=''

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

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

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

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

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

 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"> 

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

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