Javascript 添加所选内容的按钮=";精选;从外部形式

Javascript 添加所选内容的按钮=";精选;从外部形式,javascript,jquery,Javascript,Jquery,我正在使用laravel,并尝试集成一些我不太擅长的jquery 我有一个基于数据库值的多选择框,其中可能有很多选项 <div class="toolselect"> <select multiple> <option value="1">Tool 1</option> <option value="2">Tool 2</option> <option value="3">Tool 3</option>

我正在使用laravel,并尝试集成一些我不太擅长的jquery

我有一个基于数据库值的多选择框,其中可能有很多选项

<div class="toolselect">
<select multiple>
<option value="1">Tool 1</option>
<option value="2">Tool 2</option>
<option value="3">Tool 3</option>
</select>
</div>

工具1
工具2
工具3
用户可以直接从选择框中选择工具,但这可能是一个巨大的列表,因此我还在选择框下方显示一个搜索字段以供选择 搜索工具数据库,以便用户可以查看有关该工具的更多信息,然后决定是否包含该工具

目前,用户必须首先搜索,然后在选择框中找到条目并选择它

我想要一个更快的解决方案,在工具信息旁边有一个按钮,可以自动将selected=“selected”添加到上面选择框中的正确选项中

我试过了

<input type="button" value="Mer" onclick="addselect('{{$tool->id}}')"/>

<script type="text/javascript">
addselect = function (id){
$("div.toolselect select").val(id);
}

addselect=函数(id){
$(“div.toolselect”).val(id);
}

但这会删除所有其他选定字段


任何想法都将不胜感激。

尝试使用jQuery的
prop
功能:

<input type="button" value="Mer" onclick="addselect('{{$tool->id}}')"/> 


<script type="text/javascript"> 
    addselect = function (id){ 
        $('.toolselect select option[value="'+ id +'"]').prop('selected'); 
    }
</script>

addselect=函数(id){
$('.toolselect选项[value=“+id+”).prop('selected');
}

不使用此选项:

addselect = function (id){
$("div.toolselect select").val(id);
}
试试这个:

addselect = function(id) {
  var temp = [];
    var arr = $('select').val();
    for(i=0;i<arr.length;i++){
        temp.push(arr[i]);
    }
    temp.push(id);
  $("div.toolselect select").val(temp);
}
addselect=函数(id){
var-temp=[];
var arr=$('select').val();

对于(i=0;i对于多选,该值是所有选定项的数组。您只需将该值设置为单个项,该项被视为一个元素的数组,因此所有其他选择都将被丢弃

因此,您应该获取旧值,向其添加新ID,然后将其设置为新值

函数addselect(id){
$('.toolselect').val(函数(i,oldval){
oldval=oldval | |[];//未选择任何内容时,oldval=null
旧值推送(id);
返回oldval;
});
}

工具1
工具2
工具3

我在下面遇到了一点问题。你能以一步一步的形式编写它吗?步骤1:用户从列表中选择hammer,步骤2:???步骤3:利润!在你的场景中用于搜索的输入框是否有相关的HTML?对于
,值应该是一个数组,包含所有应选择元素的值d、 谢谢!这似乎工作得很好,除了当我使用select2插件进行下拉时。然后该值没有被选中。你知道为什么吗?(很抱歉提出新问题)。非常感谢,非常感谢,需要提高我的搜索技能:)