如果 "No Results Match" 与 .select 如何保存自定义选项?
How to save custom option if "No Results Match" with .select?
我还在争论 text_field
还是 select
更合适。
使用 text_field
您可以保存自定义文本。
使用 select
,您可以从提供的列表中进行选择。
我想要一个 混合,当用户点击该字段时,会出现一个带有选项的下拉菜单,但用户可以忽略它并键入自己的自定义选项。
我试过 select2 and looked into a variety of jquery plugins provided here,但如果您键入自定义选项,它将返回 "No results matched",然后您将无法保存它。
创建这种混合体的最佳方法是什么?我在 Rails.
上使用 Ruby
您可以简单地使用 select2 的 createSearchChoice
选项,这将添加新的选择而不是显示 "no results"。在 jsfiddle
查看 运行
Html:
<input type="hidden" id="tags" style="width: 300px"/>
Javascript:
var lastResults = [];
$("#tags").select2({
//multiple: true,
placeholder: "Please enter tags",
//tokenSeparators: [","],
ajax: {
multiple: true,
url: "/echo/json/",
dataType: "json",
type: "POST",
data: function (term, page) {
return {
json: JSON.stringify({results: [{id: "foo", text:"foo"},{id:"bar", text:"bar"}]}),
q: term
};
},
results: function (data, page) {
lastResults = data.results;
return data;
}
},
createSearchChoice: function (term) {
var text = term + (lastResults.some(function(r) { return r.text == term }) ? "" : " (new)");
return { id: term, text: text };
},
});
Jsfiddle:http://jsfiddle.net/XQ8Fw/674/
看看这是否对您有帮助。
简单明了。
$('select').change(function() {
modify();
})
function modify() {
$('input').val($('select').val());
output();
}
function output() {
$('p').text('value: ' + $('input').val());
}
$('input').on('click', function() {
$(this).select()
}).on('blur', function() {
output();
})
modify();
select {
position: absolute;
width: 160px;
height: 23px;
left: 0;
top: 0;
border: 0;
}
input {
position: absolute;
width: 140px;
height: 17px;
left: 0;
top: 0;
}
p {
position: relative;
margin-top: 50px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html>
<body>
<select>
<option selected="selected" value="Wednesday">Wednesday</option>
<option value="Sunday">Sunday</option>
<option value="Monday">Monday</option>
<option value="Tuesday">Tuesday</option>
</select>
<input type="text" name="" value="">
<p>value:</p>
</body>
</html>
我还在争论 text_field
还是 select
更合适。
使用 text_field
您可以保存自定义文本。
使用 select
,您可以从提供的列表中进行选择。
我想要一个 混合,当用户点击该字段时,会出现一个带有选项的下拉菜单,但用户可以忽略它并键入自己的自定义选项。
我试过 select2 and looked into a variety of jquery plugins provided here,但如果您键入自定义选项,它将返回 "No results matched",然后您将无法保存它。
创建这种混合体的最佳方法是什么?我在 Rails.
上使用 Ruby您可以简单地使用 select2 的 createSearchChoice
选项,这将添加新的选择而不是显示 "no results"。在 jsfiddle
Html:
<input type="hidden" id="tags" style="width: 300px"/>
Javascript:
var lastResults = [];
$("#tags").select2({
//multiple: true,
placeholder: "Please enter tags",
//tokenSeparators: [","],
ajax: {
multiple: true,
url: "/echo/json/",
dataType: "json",
type: "POST",
data: function (term, page) {
return {
json: JSON.stringify({results: [{id: "foo", text:"foo"},{id:"bar", text:"bar"}]}),
q: term
};
},
results: function (data, page) {
lastResults = data.results;
return data;
}
},
createSearchChoice: function (term) {
var text = term + (lastResults.some(function(r) { return r.text == term }) ? "" : " (new)");
return { id: term, text: text };
},
});
Jsfiddle:http://jsfiddle.net/XQ8Fw/674/
看看这是否对您有帮助。 简单明了。
$('select').change(function() {
modify();
})
function modify() {
$('input').val($('select').val());
output();
}
function output() {
$('p').text('value: ' + $('input').val());
}
$('input').on('click', function() {
$(this).select()
}).on('blur', function() {
output();
})
modify();
select {
position: absolute;
width: 160px;
height: 23px;
left: 0;
top: 0;
border: 0;
}
input {
position: absolute;
width: 140px;
height: 17px;
left: 0;
top: 0;
}
p {
position: relative;
margin-top: 50px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html>
<body>
<select>
<option selected="selected" value="Wednesday">Wednesday</option>
<option value="Sunday">Sunday</option>
<option value="Monday">Monday</option>
<option value="Tuesday">Tuesday</option>
</select>
<input type="text" name="" value="">
<p>value:</p>
</body>
</html>