Jquery 如果Selectize.js选择框中不存在项,则创建该项,ajax将更新新添加的项

Jquery 如果Selectize.js选择框中不存在项,则创建该项,ajax将更新新添加的项,jquery,selectize.js,Jquery,Selectize.js,我在选择框中使用了,我需要的是,如果选项列表中没有项目,我需要添加一个新项目。添加新项时,我希望有一个ajax调用来将新添加的项更新到我的数据库中 在他们的示例中,它表示我们可以使用create让selectize添加项目 创建-允许用户创建不在选项列表中的新项目。此选项可以是以下任意选项:true默认行为、false禁用,或接受两个参数的函数:input和callback。应使用选项的最终数据调用回调 但我不知道如何使用回拨电话。有人能帮忙吗 下面是我的内容示例,这些值是数据库中项目的ID。我

我在选择框中使用了,我需要的是,如果选项列表中没有项目,我需要添加一个新项目。添加新项时,我希望有一个ajax调用来将新添加的项更新到我的数据库中

在他们的示例中,它表示我们可以使用create让selectize添加项目

创建-允许用户创建不在选项列表中的新项目。此选项可以是以下任意选项:true默认行为、false禁用,或接受两个参数的函数:input和callback。应使用选项的最终数据调用回调

但我不知道如何使用回拨电话。有人能帮忙吗

下面是我的内容示例,这些值是数据库中项目的ID。我希望将新项目添加到db中,并从db返回id值,然后在选择框中填充并选择

<select name="fruits" id="fruits" placeholder="Select a fruit" >
    <option value="1">Apple</option>
    <option value="2">Orange</option>
    <option value="3">Mango</option>
    <option value="4">Grape</option>
</select>

<script>
    $(function(){
        $('#fruits').selectize({
            create:function (input, callback){

           }
        });
    });
</script>

您必须调用回调,传递您的值:

$('#fruits').selectize({
    create:function (input, callback){
        callback({
            value: 123, // probably your ID created or something
            text: input
        });
    }
});

实际上,您必须返回属性与labelField和valueField选项名称匹配的对象:

<script>
    $(function(){
        $('#fruits').selectize({
            create:function (input){
               return { value:123, text:input};
           }
        });
    });
</script>
如果需要执行远程操作,请按以下方式编写代码:

<script>
    $(function(){
        $('#fruits').selectize({
            create:function (input, callback){
                $.ajax({
                    url: '/remote-url/',
                    type: 'GET',
                    success: function (result) {
                        if (result) {
                            callback({ value: result.id, text: input });
                        }
                    }
                });
            }
        });
    });
</script>

您需要将callback放在create函数create:function input,callbackGood catch中。复制/粘贴打字错误。谢谢分享。如何获取添加了新项的select下拉列表的标识符?我不仅要传递输入参数中存储的新项值,还要传递select标识符,以便决定将新项插入到哪个数据库表中。任何指点都将不胜感激。你好。谢谢分享这段代码。我能够重用上面的代码,并在数据库表中插入了一个新项。但当我移动到另一个文本框控件时,该值消失,我必须选择新添加的项。只是想知道我是否遗漏了什么。必须是回调{value:result.id,text:input};在最新的selectize.js中
Thanks a lot, @Corgalore. Its working for me like
$(function(){
        $('#desig').selectize({
            create:function (input, callback){
                $.ajax({
                    url: "<?php  echo $this->url(null, array('controller' => 'employee-detail', 'action' => 'add-new-desig-ajax'));?>",
                    type: 'POST',
                    data:{'designation':input},
                    success: function (result) {
                        if (result) {
//                            console.log('sdfasf',result);
                            callback({ value: result.id, text: input });
                        }
                    }
                });
            }
        });
    });