假设我有这个选择框:
<select id="example" multiple="multiple" style="width: 300px">
<option selected value="1">January</option>
<option value="2">February</option>
<option value="3">March</option>
<option value="4">April</option>
<option value="5">May</option>
<option value="6">June</option>
<option value="7">July</option>
<option value="8">August</option>
<option value="9">September</option>
<option value="10">October</option>
<option value="11">November</option>
<option value="12">December</option>
</select>
为了与网站的许多其他部分进行通信,无法更改该值。这仅用于演示示例,实际用例更复杂,显示值需要与将要提交的实际表单值不同。
要允许自动填充并添加新标记,请使用select2。
$('#example').select2({
placeholder: 'Select a month',
tags: true,
tokenSeparators: [',', ' ']
});
问题在于,当键入完整的月份名称(例如“1月”),然后按空格键,而不是选择现有的“1月”选项(这是我所期望的)时,它只是创建一个值为{的新标签{1}}。
经过一些重复测试,我发现只有当实际值与显示值不同时才会发生这种情况。有没有办法可以保持两个值不同但是选择已存在的选项?
答案 0 :(得分:1)
通过搜索匹配来利用createTag
事件。
如果没有匹配项,并且由于您不想添加新标记,只需返回null
:
var options = $('#example option');
$('#example').select2({
placeholder: 'Select a month',
tags: true,
tokenSeparators: [',', ' '],
createTag: function(params) {
var matchedVal = options.filter(function () { return $(this).html() === params.term; }).val();
return (matchedVal) ? { id: matchedVal, text: params.term } : null
}
});
演示:https://jsfiddle.net/2yu87gyf/
修改强>
根据您的评论,如果标记尚不存在,请创建标记 - 请改用此return
语句:
return (matchedVal) ? { id: matchedVal, text: params.term } : { id: params.term, text: params.term }
创建无与伦比的代码演示:https://jsfiddle.net/2yu87gyf/1/
答案 1 :(得分:0)
试试这个
删除标记选项,因为它会动态创建新标记
IEnumerator WWWClass()
{
string url1 = "xyz.com";
string url2 = "xyzzz.com";
WWW www = new WWW(url);
yield return www;
if (www.error == null)
{
//sucess
}
else {
//unscuess
www = new WWW(url2);
yield return www;
if (www.error == null)
{
//sucess
}
else {
//unscuess
}
}
}