标签输入插件 tagsinput 输入中文显示不全bug

问题

在使用 bootstrap-tagsinput 或者 jQuery-Tags-Input 输入中文时会出现中文显示不全的情况
bug复现

分析

当输入英文时 input 框能跟随内容自适应宽度
查看源码 找到监听输入方法

$(data.fake_input).bind('keypress', data, function (event) {
	if (_checkDelimiter(event)) {
		event.preventDefault();
		if ((event.data.minChars <= $(event.data.fake_input).val().length) && (!event.data.maxChars || (event.data.maxChars >= $(event.data.fake_input).val().length)))
			$(event.data.real_input).addTag($(event.data.fake_input).val(), { focus: true, unique: (settings.unique) });
		$(event.data.fake_input).resetAutosize(settings);
		return false;
	} else if (event.data.autosize) {
		$(event.data.fake_input).doAutosize(settings);
	}
});

输入汉字时无法触发keypress 事件导致无法动态修改 input的宽度

解决

将此方法分为两部分 keypress 事件只作为 回车时生成新的标签
用 input 事件 监听输入框输入

$(data.fake_input).bind('keypress',data,function(event) {
	if (_checkDelimiter(event)) {
		event.preventDefault();
		if( (event.data.minChars <= $(event.data.fake_input).val().length) && (!event.data.maxChars || (event.data.maxChars >= $(event.data.fake_input).val().length)) )
			$(event.data.real_input).addTag($(event.data.fake_input).val(),{focus:true,unique:(settings.unique)});
		  $(event.data.fake_input).resetAutosize(settings);
		return false;
	}
});
$(data.fake_input).bind('input',data,function(event) {
	if (event.data.autosize) {
		$(event.data.fake_input).doAutosize(settings);
	}
})

完成

完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值