Select2多个值在init上加倍预填充值,仍然发送

时间:2015-08-28 20:20:52

标签: jquery-select2

有很多关于select2倍增值的问题,其中很多都没有接受答案。

从表面上看,一切看起来都不错,但是当我删除一个令牌时,它仍然以params发送它。

检查inputselect2隐藏的)

的值

在初始化select2之前

$('#language_list').val() //=> "english spanish italian"

初始化后

$('#language_list').val() //=> "english spanish italian,english,spanish,italian"

// It's clearer what's going on like this.
// And I don't know if it's significant but tokenSeparators: [",", " "]
$("#user_language_list").select2("val") //=> ["english spanish italian", "english", "spanish", "italian"]

很多问题都出现了,就像我在错误发生后重新填充表格一样

$('#language_list').val() //=> "english-spanish-italian english spanish italian,english,spanish,italian"

隐藏在input中我必须在后端处理。

1 个答案:

答案 0 :(得分:1)

在将数据发送到callback

之前清除价值的方法有用

您可能会认识到这基本上是文档中的代码。

    initSelection: function (e, callback) {
      var tags = e.val().split(/, |,| /);

      for (var i = 0; i < tags.length; i++) {
        var tag = tags[i].trim();
        tags[i] = {id: tag, text: tag};
      }

      callback(tags);
    }

但你只需要清理val

    initSelection: function (e, callback) {
      var tags = e.val().split(/, |,| /);
      e.val("")
      for (var i = 0; i < tags.length; i++) {
        var tag = tags[i].trim();
        tags[i] = {id: tag, text: tag};
      }

      callback(tags);
    }