Jquery Tag-IT 允许中间有逗号

Jquery Tag-IT Allow Comma in the Middle

好的,事情就是这样。我们在控件上使用第 3 方控件 "tag-it"。 JQUERY TAG-IT

现在我们遇到了一个问题,我们需要允许用户粘贴两个单词的文本,然后在它们之间放置一个逗号。为了演示这是 tag-it 控件的当前行为:

  1. 用户粘贴"text sample"
  2. 用户在中间加上了逗号"text , sample"
  3. Jquery tag-it 将单词标记为 "text sample"

我想要的行为是这样的:

  1. 用户粘贴"text sample"
  2. 用户在中间加上了逗号"text , sample"
  3. Jquery tag-it 将单词标记为 "text" 和 "sample"

这可能吗?如果可以,我们如何实施?

如果您不使用缩小版,请编辑 tag-it.js。 找到第 224 行,并在该行之前粘贴此代码块:

this.tagInput.bind('paste', function (event) {
    // Set short timeout so .val() will have a value
    setTimeout(function () {
        var tagArray = that.tagInput.val().split(/[\n,]+/);
        if (tagArray.length > 1) {
            for (var i = 0; i < tagArray.length; i++) {
                that.createTag(tagArray[i]);
            }
        }
    }, 100);
});

所以基本上它所做的是绑定一个新的粘贴事件并用逗号分隔输入,并为分隔的项目创建一个新标签。

请参考这个github问题: https://github.com/aehlke/tag-it/issues/301

不客气:) ---> 不客气...哈哈哈哈。

问题 如果您不粘贴值而只是手动输入逗号,那会怎么样?

编辑 2:另一种选择

  1. 还原我之前所做的所有更改。

  2. 删除第244行,(event.which === $.ui.keyCode.COMMA && event.shiftKey === false) ||

这是允许逗号输入

  1. 修改第270行,检查输入中是否有逗号

    that.tagInput.autocomplete('close');
    if ($.trim(that.tagInput.val()).indexOf(',') > -1) {
        var tagArray = that.tagInput.val().split(/[\n,]+/);
        if (tagArray.length > 1) {
            for (var i = 0; i < tagArray.length; i++) {
                that.createTag($.trim(tagArray[i]));
            }
        }
    }
    else {
        that.createTag(that._cleanedInput());
    }
    

    说明: 由于我们允许空格(我假设)和逗号,现在创建标签的唯一触发器是按回车键。

例如: 输入:"Sample, Text" 在我按下 Enter 键后,它将被分成 "Sample" 和 "Text" 标签。