Не добавлять, если строка уже содержит OnChange - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть функция OnChange javascript для столбца с текстовыми полями, который фиксирует имя каждой строки в столбце.Я добавляю все имена и храню в переменной.Теперь предположим, что пользователь снова щелкает по тому же текстовому полю, я не хочу добавлять это имя снова.

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

Ответы [ 3 ]

0 голосов
/ 14 февраля 2019

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">
0 голосов
/ 14 февраля 2019

Вы можете добавить пометку к вашим текстовым полям и игнорировать, если на них снова нажали.Например, используя jquery, вы можете сделать что-то вроде этого:

function onChangeTest(textbox) {
    AppendedString = AppendedString;
    if (!textbox.hasClass("clicked")){
        AppendedString = AppendedString + ';' + textbox.name;
        textbox.AddClass("clicked");
    }
 }
0 голосов
/ 14 февраля 2019

Кажется, что эти строки имеют уникальные имена.Вы можете просто проверить, содержит ли AppendedString это имя:

var AppendedString=''

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

Ссылка Codepen

Вы не можете инициализировать AppendedString как null, иначе *Метод 1010 * будет недоступен

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

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

function onChangeTest(textbox) {
      if (!clickedRows.includes(textbox.id)) {
        AppendedString += ';' + textbox.name;
        clickedRows.push(textbox.id)
      }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...