jQuery combobox解决检索中文问题

今天同事问了一个问题,就是jQuery的combobox不能检索中文的问题,需求是在combobox里面输入汉字,下拉框的值能自动检索匹配。

开始我从网上找到了一个解决办法,就是在jquery.easyui.min.js里面给combobox的内置".combo-text"绑定一个input事件即能搞定,这个可以参考jQuery EasyUI Combobox无法检索中文输入的问题(备注:这个解决办法是别人的),这个会解决一些低版本的combobox问题。具体如下:

一、用编辑器打开jquery.easyui.min.js文件(这里展示的1.3.1版本),搜索关键字"opts.editable",找到"if(opts.editable){"这一行,然后在这个if语句最后面里面添加如下代码:

_716.bind("input",function(e){
	if(_713.timer){
		clearTimeout(_713.timer);
	}
	_713.timer=setTimeout(function(){
		var q=_716.val();
		if(_713.previousValue != q){
			_713.previousValue = q;
			_719(_712);
			 opts.keyHandler.query.call(_712, _716.val());
			 _722(_712, true);
		}
	},opts.delay);
});
二、不同版本的这个文件,里面的变量是不同的,但是都可以对应的上, 里面的变量匹配如下图:

着这个匹配图,把有关的变量改成自己文件里面的变量即可搞定。看代码可以知道,这里面的_716其实就是combobox内置的input控件,主要就是给这控件绑定input事件。

但如果是高版本的,你把这段代码copy进去,然后改几个变量,你会发现你匹配不到对应的变量,因为高版本里面combobox没有内置".combo-text",而且有少许的方法变动。这里就给出我的办法,其实大体上是差不多的

一、用编辑器打开jquery.easyui.min.js文件(这里展示的1.4.2版本),搜索关键字"opts.editable",找到"if(opts.editable){"这一行,你会发现这些代码是在function _91f(e)里面。

二、添加一句话,如下图:

、然后在上面的if语句最后添加代码,如下图:

两种方式可以发现,低版本的combobox是内置".combo-text",而高点的版本没有内置".combo-text",是".textbox-text",所以有需求的同学,需要根据你的jquery.easyui.min.js版本来决定

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaFX ComboBox是一个下拉列表框,它允许用户从预定义的选项中进行选择。关键字检索是指在ComboBox中输入关键字,然后根据关键字过滤选项,只显示与关键字匹配的选项。下面是一个简单的JavaFX ComboBox关键字检索的例子: ```java import javafx.application.Application; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.scene.Scene; import javafx.scene.control.ComboBox; import javafx.scene.control.TextField; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class ComboBoxDemo extends Application { private final ObservableList<String> data = FXCollections.observableArrayList( "Apple", "Banana", "Cherry", "Date", "Grape", "Kiwi", "Lemon", "Mango", "Pear"); @Override public void start(Stage stage) { ComboBox<String> comboBox = new ComboBox<>(data); TextField textField = new TextField(); textField.setPromptText("Search"); // 根据关键字过滤选项 textField.textProperty().addListener((observable, oldValue, newValue) -> { if (newValue == null || newValue.isEmpty()) { comboBox.setItems(data); } else { ObservableList<String> filteredList = FXCollections.observableArrayList(); for (String item : data) { if (item.toLowerCase().contains(newValue.toLowerCase())) { filteredList.add(item); } } comboBox.setItems(filteredList); } }); VBox root = new VBox(comboBox, textField); Scene scene = new Scene(root); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } } ``` 在这个例子中,我们创建了一个ComboBox和一个TextField。当用户在TextField中输入关键字时,我们根据关键字过滤选项,并将过滤后的选项设置为ComboBox的选项。这样,用户只能看到与关键字匹配的选项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值