Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jquery的Knockout autocomplete不允许选择自定义值_Javascript_Jquery_Knockout.js_Autocomplete - Fatal编程技术网

Javascript 使用jquery的Knockout autocomplete不允许选择自定义值

Javascript 使用jquery的Knockout autocomplete不允许选择自定义值,javascript,jquery,knockout.js,autocomplete,Javascript,Jquery,Knockout.js,Autocomplete,我已经阅读了如何使用knockout实现自动完成 我已经成功了,但请注意,我无法选择自己键入的值 更多说明:我在输入中键入自动完成源中不存在的任何字符串。因此,该字符串未设置为该输入的值 ko.bindingHandlers.autoComplete={ //仅使用init事件,因为Jquery.UI.AutoComplete小部件将处理更新回调 init:函数元素、valueAccessor、allBindings、viewModel、bindingContext{ //{selected:

我已经阅读了如何使用knockout实现自动完成

我已经成功了,但请注意,我无法选择自己键入的值

更多说明:我在输入中键入自动完成源中不存在的任何字符串。因此,该字符串未设置为该输入的值

ko.bindingHandlers.autoComplete={ //仅使用init事件,因为Jquery.UI.AutoComplete小部件将处理更新回调 init:函数元素、valueAccessor、allBindings、viewModel、bindingContext{ //{selected:mySelectedOptionObservable,options:myArrayOfLabelValuePairs} var设置=valueAccessor; var selectedOption=settings.selected; var options=settings.options; var elVal=$element.val; var updateElementValueWithLabel=函数事件,用户界面{ //停止默认行为 违约事件; //使用标签更新html元素的值 //列表ui.item中激活选项的 $element.valui.item!==null?ui.item.label:elVal; //更新我们选择的可观察选项 iftypeof ui.item!==未定义{ //ui.item-标签|值|。。。 选择OptionUI.item; } }; $element.autocomplete{ 资料来源:选项, 选择:功能事件,用户界面{ 使用LabelEvent更新元素值,ui; }, 焦点:功能事件,用户界面{ 使用LabelEvent更新元素值,ui; }, 更改:函数事件,用户界面{ 使用LabelEvent更新元素值,ui; } }; } }; //原始数据数组 远程数据变量=[{ 姓名:'厄尼', 身份证号码:1 }, { 姓名:'伯特', 身份证号码:2 }, { 姓名:'日尔曼', 身份证号码:3 }, { 姓名:“莎莉”, 身份证号码:4 }, { 名字:“黛西”, 身份证号码:5 }, { 名字:“桃子”, 身份证号码:6 }]; 函数视图模型{ var self=这个; self.users=远程数据; self.selectedOption=ko.observable; self.options=self.users.mapfunction元素{ //JQuery.UI.AutoComplete需要标签和值属性,但我们可以添加自己的属性 返回{ 标签:element.name, 值:element.id, //这样我们仍然可以访问原始对象 对象:元素 }; }; } $function{ ko.applybindingsnewviewmodel; };

如果要修改绑定以接受不在选项列表中的值,则需要调整updateElementValueWithLabel,以在未选择项时不重置元素值

ko.bindingHandlers.autoComplete={ //仅使用init事件,因为Jquery.UI.AutoComplete小部件将处理更新回调 init:函数元素、valueAccessor、allBindings、viewModel、bindingContext{ //{selected:mySelectedOptionObservable,options:myArrayOfLabelValuePairs} var设置=valueAccessor; var selectedOption=settings.selected; var options=settings.options; var elVal=$element.val; var updateElementValueWithLabel=函数事件,用户界面{ //停止默认行为 违约事件; //更新我们选择的可观察选项 ifui.item{ //使用标签更新html元素的值 //列表ui.item中激活选项的 //ui.item-标签|值|。。。 $element.valui.item.label; 选择OptionUI.item.label; }否则{ 选择选项$element.val; } }; $element.autocomplete{ 资料来源:选项, 选择:功能事件,用户界面{ 使用LabelEvent更新元素值,ui; }, 更改:函数事件,用户界面{ 使用LabelEvent更新元素值,ui; } }; } }; //原始数据数组 远程数据变量=[{ 姓名:'厄尼', 身份证号码:1 }, { 姓名:'伯特', 身份证号码:2 }, { 姓名:'日尔曼', 身份证号码:3 }, { 姓名:“莎莉”, 身份证号码:4 }, { 名字:“黛西”, 身份证号码:5 }, { 名字:“桃子”, 身份证号码:6 }]; 函数视图模型{ var self=这个; self.users=远程数据; self.selectedOption=ko.observable; self.options=self.users.mapfunction元素{ //JQuery.UI.AutoComplete需要标签和值属性,但我们可以添加自己的属性 返回{ 标签:element.name, 值:element.id, //这样我们仍然可以访问原始对象 对象:元素 }; }; } $function{ ko.applybindingsnewviewmodel; };

非常感谢!这是w 我想做的事