使用服务器筛选获取kendo multiselect中的搜索字符串

时间:2016-11-23 10:06:15

标签: jquery kendo-ui kendo-multiselect

我有一个带有服务器过滤功能的kendo multi select,如下所示。

$("#ddlAnalysisTeamMember_" + _WidgetID).kendoMultiSelect(
    {
        autoBind: false,
        minLength: 3,
        //placeholder: 'User Name',
        dataTextField: 'Text',
        dataValueField: 'ID',
        filter: 'contains',
        autoClose: false,
        delay: 200,
        dataSource: {
            serverFiltering: true,
            transport: {
                read: {
                    url: _VirDir("GetUsernameMultiAutoComplete", "LoadController"),
                    dataType: 'json'
                }
            }
        }
    }
);

我需要什么?

我需要让搜索字符串用户在框中输入,比如用户输入" apple"搜索并检查是否有任何HTML。如果有任何html类型,我需要提出alert()并停止服务器调用进行过滤。

到目前为止我做了什么?

我在这样的多选中尝试了虚拟

      virtual: {
                itemHeight: 26,
                valueMapper: function (options) {
                    alert(options.value);
                }
            },
            dataSource: {
                serverFiltering: true,
                transport: {
                    read: {
                        url: _VirDir("GetUsernameMultiAutoComplete", "WidgetsLoad"),
                        dataType: 'json'
                    }
                }
            },

但这不起作用。

2016年11月28日更新

我使用下面的代码输入了搜索字符串用户。并成功验证字符串并显示验证消息。

dataSource: {
    serverFiltering: true,
    transport: {
        read: {
            url: _VirDir("GetUsernameMultiAutoComplete", "WidgetsLoad"),
            dataType: 'json',
            data: function () {
                var searchText = $.trim($("#ddlAnalysisTeamMember_" + _WidgetID).data('kendoMultiSelect').input.val());
                if(searchText.showDangerousString()){// show error message div if restricted chars found.
                // block server request
                e.preventDefault(); // not working. a server request is going
                return false; // not working. a server request is going
                } 
                else
                {
                    return true;
                }
            }
        }
    }
}

即使我尝试了e.preventDefault()return false;服务器呼叫。

有没有办法停止服务器调用?

在发送到服务器以过滤数据之前,是否有任何事件可以捕获用户在多选中输入的内容?

有没有办法让用户输入搜索文本?

2016年11月28日更新

有没有办法停止从数据源内的数据函数发送服务器请求?

1 个答案:

答案 0 :(得分:0)

目前没有选项,您可以get the value from value function或在客户端和服务器端验证它。