Select2 多个值将初始化时预填充的值加倍,并且仍然发送
Select2 multiple values doubles prepopulated values on init, and still sends
关于select2倍增值的问题很多,很多都没有公认的答案。
表面上一切看起来都很好,但是当我删除一个令牌时,它仍然在参数中发送它。
正在检查 input
的值(select2
正在隐藏)
初始化之前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
中,我必须在后端解决。
有效的方法是在将数据发送到 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);
}
关于select2倍增值的问题很多,很多都没有公认的答案。
表面上一切看起来都很好,但是当我删除一个令牌时,它仍然在参数中发送它。
正在检查 input
的值(select2
正在隐藏)
初始化之前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
中,我必须在后端解决。
有效的方法是在将数据发送到 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);
}