fix(form-select): lay-creatable 旧版微软拼音输入法兼容性问题 (#1667)
* fix(form-select): lay-creatable 在旧版微软拼音输入法下无法创建中文 option 的问题 * fix(form-select): 旧版微软拼音输入法在 IE11 下无法创建中文 option 问题 * chore: lint * update * update * updae
This commit is contained in:
parent
56199df2c7
commit
dd81129d2d
@ -409,6 +409,11 @@ layui.define(['lay', 'layer', 'util'], function(exports){
|
||||
// 搜索项
|
||||
var laySearch = select.attr('lay-search');
|
||||
|
||||
// #1449
|
||||
// IE10 和 11 中,带有占位符的 input 元素获得/失去焦点时,会触发 input 事件
|
||||
// 当鼠标按下时,根据 input 元素上的 __ieph 标识忽略 input 事件
|
||||
var needPlaceholderPatch = !!(lay.ie && (lay.ie === '10' || lay.ie === '11') && input.attr('placeholder'));
|
||||
|
||||
// 展开下拉
|
||||
var showDown = function(){
|
||||
var top = reElem.offset().top + reElem.outerHeight() + 5 - $win.scrollTop();
|
||||
@ -431,6 +436,15 @@ layui.define(['lay', 'layer', 'util'], function(exports){
|
||||
}
|
||||
|
||||
followScroll();
|
||||
|
||||
if(needPlaceholderPatch){
|
||||
dl.off('mousedown.select.ieph').on('mousedown.select.ieph', function(){
|
||||
input[0].__ieph = true;
|
||||
setTimeout(function(){
|
||||
input[0].__ieph = false;
|
||||
}, 60)
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// 隐藏下拉
|
||||
@ -582,9 +596,10 @@ layui.define(['lay', 'layer', 'util'], function(exports){
|
||||
layui.each(dds, function(){
|
||||
var othis = $(this);
|
||||
var text = othis.text();
|
||||
var isCreateOption = isCreatable && othis.hasClass(CREATE_OPTION);
|
||||
|
||||
// 需要区分大小写
|
||||
if(isCreatable && text === rawValue){
|
||||
if(isCreatable && !isCreateOption && text === rawValue){
|
||||
hasEquals = true;
|
||||
}
|
||||
|
||||
@ -598,7 +613,7 @@ layui.define(['lay', 'layer', 'util'], function(exports){
|
||||
var not = text.indexOf(value) === -1;
|
||||
|
||||
if(value === '' || (origin === 'blur') ? value !== text : not) num++;
|
||||
origin === 'keyup' && othis[(not && (isCreatable ? !othis.hasClass(CREATE_OPTION) : true)) ? 'addClass' : 'removeClass'](HIDE);
|
||||
origin === 'keyup' && othis[(isCreatable ? (not && !isCreateOption) : not) ? 'addClass' : 'removeClass'](HIDE);
|
||||
});
|
||||
// 处理 select 分组元素
|
||||
origin === 'keyup' && layui.each(dts, function(){
|
||||
@ -623,6 +638,11 @@ layui.define(['lay', 'layer', 'util'], function(exports){
|
||||
return false;
|
||||
}
|
||||
|
||||
if(needPlaceholderPatch && e.target.__ieph){
|
||||
e.target.__ieph = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
notOption(value, function(none, hasEquals){
|
||||
if(isCreatable){
|
||||
if(hasEquals){
|
||||
@ -661,12 +681,7 @@ layui.define(['lay', 'layer', 'util'], function(exports){
|
||||
};
|
||||
|
||||
if(isSearch){
|
||||
// #1449: IE10 和 11 中,带有占位符的 input 元素获得/失去焦点时,会触发 input 事件
|
||||
var eventsType = 'input propertychange';
|
||||
if(lay.ie && (lay.ie === '10' || lay.ie === '11') && input.attr('placeholder')){
|
||||
eventsType = 'keyup';
|
||||
}
|
||||
input.on(eventsType, search).on('blur', function(e){
|
||||
input.on('input propertychange', layui.debounce(search, 50)).on('blur', function(e){
|
||||
var selectedIndex = select[0].selectedIndex;
|
||||
|
||||
thatInput = input; // 当前的 select 中的 input 元素
|
||||
|
Loading…
Reference in New Issue
Block a user