我使用select2 jQuery插件与magnific popup一起。如果我在打开的弹出窗口中点击选择框,就会出现带有一些结果的搜索框。问题是无法在搜索框中输入任何内容 - 光标根本不会出现。这是一个演示问题的jsfiddle http://jsfiddle.net/clime/qweWa/15/。代码如下:
# html
<a href="#test-popup" class="open-popup-link">Show inline popup</a>
<div id="test-popup" class="white-popup mfp-hide">
<select id="focus-blur-loop-select">
<option>hello</option>
<option>world</option>
</select>
</div>
# js
$(function() {
$('.open-popup-link').magnificPopup({
type:'inline',
midClick: true
});
$('#focus-blur-loop-select').select2({
width: '200px'
});
});
# css
.white-popup {
position: relative;
background: #FFF;
padding: 20px;
width: auto;
max-width: 500px;
margin: 20px auto;
}
我已经做了一些基础研究,发现以下两个回调函数被无限调用。事件中似乎存在无限循环。
// select2.js:742
search.on("focus", function () { search.addClass("select2-focused"); });
search.on("blur", function () { search.removeClass("select2-focused");});
select2
,实际上它也会影响大多数文本输入框,如果你在弹出窗口中提供了动态内容,它将禁用那里的文本框,在问题上苦苦思考。+1 - Kevin