以下のようにサーバーフィルタリングを使用した剣道マルチセレクトがあります。
$("#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 日更新
データソース内のデータ関数からのサーバー リクエストの送信を停止する方法はありますか?