簡體   English   中英

如何限制輸入中標簽的添加?

[英]How to make a restriction on the addition of tags in the input?

有一個完全有效的代碼。 它的任務是在輸入字段中添加用逗號分隔的標記(文本),以記住選擇(添加的標記會更改顏色)。

一切都很好,但是使用此功能,用戶可以添加無限數量的標簽。 如何防止用戶添加超過4-5個標簽? 如果超過限制標簽,將被另一個標簽取代嗎?

html代碼:

<ul id="aTags">
HTML;
    for ($i=0;$d[$i];$i++) {
      $html .= '<li class="atags-b" onClick="aTags.toggle(this);">'.$d[$i].'</li>';
    }
    $html .= <<<HTML
</ul>

JavaScript代碼:

aTags = {
  inputObj : document.getElementById("tags"),
  tagsColl : document.getElementById("aTags").getElementsByTagName("li"),
  array_value : function (arr) {
    var c = 0;
    var tmpArr = new Array ();
    for (key in arr) {
      tmpArr[c] = arr[key];
      ++c;
    }
    return tmpArr;
  },
  toggle : function (e) {
    var iArr = this.inputObj.value.split(',');
    var in_arr = false;
    for (var i in iArr) {

      iArr[i] = iArr[i].replace(/^[\s\xa0]+|[\s\xa0]+$/g, "");
    }
    for (var i=0;i<iArr.length;i++) {

      if (iArr[i] == e.innerHTML) {
        in_arr = true;
        delete iArr[i];
        break;
      }
      else if (iArr[i] == '')
        delete iArr[i];
    }
    if (in_arr === false) {
      iArr.push(e.innerHTML);
    }
    iArr = this.array_value(iArr);
    this.highlight(iArr);
    this.inputObj.value = iArr.join(', ');
  },
  highlight : function (tags) {

    for (var i=0;i < this.tagsColl.length;i++) {

      this.tagsColl[i].className = 'atags-b';
      for (var ii=0;ii<tags.length;ii++) {
        //alert (this.tagsColl[i].innerHTML + ' <> ' + tags[ii]);
        if (this.tagsColl[i].innerHTML == tags[ii]) {
          this.tagsColl[i].className = 'atags-c';
          break;
        }
      }
    }
  },
  iHighlight : function () {

    var iArr = this.inputObj.value.split(',');
    var in_arr = false;
    for (var i in iArr) {

      iArr[i] = iArr[i].replace(/^[\s\xa0]+|[\s\xa0]+$/g, "");
    }
    this.highlight (iArr);
  }
}

點擊次數:

let num = 0, button = document.querySelector('[class=atags-b]');
button.onclick = function () {    
    num++, num > 4 ? this.disabled = true : '';
};

謝謝!!

- 艾森

iArr = this.array_value(iArr) ,我將數組限制為4個元素:

iArr = iArr.slice(0, 4);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM