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');
|
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 showDown = function(){
|
||||||
var top = reElem.offset().top + reElem.outerHeight() + 5 - $win.scrollTop();
|
var top = reElem.offset().top + reElem.outerHeight() + 5 - $win.scrollTop();
|
||||||
@ -431,6 +436,15 @@ layui.define(['lay', 'layer', 'util'], function(exports){
|
|||||||
}
|
}
|
||||||
|
|
||||||
followScroll();
|
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(){
|
layui.each(dds, function(){
|
||||||
var othis = $(this);
|
var othis = $(this);
|
||||||
var text = othis.text();
|
var text = othis.text();
|
||||||
|
var isCreateOption = isCreatable && othis.hasClass(CREATE_OPTION);
|
||||||
|
|
||||||
// 需要区分大小写
|
// 需要区分大小写
|
||||||
if(isCreatable && text === rawValue){
|
if(isCreatable && !isCreateOption && text === rawValue){
|
||||||
hasEquals = true;
|
hasEquals = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -598,7 +613,7 @@ layui.define(['lay', 'layer', 'util'], function(exports){
|
|||||||
var not = text.indexOf(value) === -1;
|
var not = text.indexOf(value) === -1;
|
||||||
|
|
||||||
if(value === '' || (origin === 'blur') ? value !== text : not) num++;
|
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 分组元素
|
// 处理 select 分组元素
|
||||||
origin === 'keyup' && layui.each(dts, function(){
|
origin === 'keyup' && layui.each(dts, function(){
|
||||||
@ -623,6 +638,11 @@ layui.define(['lay', 'layer', 'util'], function(exports){
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(needPlaceholderPatch && e.target.__ieph){
|
||||||
|
e.target.__ieph = false;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
notOption(value, function(none, hasEquals){
|
notOption(value, function(none, hasEquals){
|
||||||
if(isCreatable){
|
if(isCreatable){
|
||||||
if(hasEquals){
|
if(hasEquals){
|
||||||
@ -661,12 +681,7 @@ layui.define(['lay', 'layer', 'util'], function(exports){
|
|||||||
};
|
};
|
||||||
|
|
||||||
if(isSearch){
|
if(isSearch){
|
||||||
// #1449: IE10 和 11 中,带有占位符的 input 元素获得/失去焦点时,会触发 input 事件
|
input.on('input propertychange', layui.debounce(search, 50)).on('blur', function(e){
|
||||||
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){
|
|
||||||
var selectedIndex = select[0].selectedIndex;
|
var selectedIndex = select[0].selectedIndex;
|
||||||
|
|
||||||
thatInput = input; // 当前的 select 中的 input 元素
|
thatInput = input; // 当前的 select 中的 input 元素
|
||||||
|
Loading…
Reference in New Issue
Block a user