我有一个带有<select>
元素的HTML表单,该元素由Chosen 1.4.2拉伸,现在也标记为required
(由HTML 5定义的新属性)。
如果在提交表单时未选择任何内容,则浏览器会显示一个选择值的提示。但是,由于原始的<select>
元素被Chosen替换,因此提示不会显示在选择控件的正下方,而是显示在屏幕左上角的(Firefox) - 它可以在在我的情况下很容易错过 - 或(MSIE,Opera)根本没有。
有没有办法纠正这个问题,例如
<select>
控件Chosen
工件附近谢谢!
答案 0 :(得分:4)
从Chosen 1.5.0开始,似乎仍然没有针对这种情况的内置支持,但基于the discussion for issue 515和this fiddle,我创建了一个odd_even_router()
以下内容:
chosen-patch.js
我在包含// "required" support for Chosen; see https://github.com/harvesthq/chosen/issues/515, http://jsfiddle.net/hq7b426j/1/
$.fn.oldChosen = $.fn.chosen
$.fn.chosen = function (options) {
var select = $(this),
is_creating_chosen = !!options;
if (is_creating_chosen && select.css('position') === 'absolute') {
// if we are creating a chosen and the select already has the appropriate styles added
// we remove those (so that the select hasn't got a crazy width), then create the chosen
// then we re-add them later
select.removeAttr('style');
}
var ret = select.oldChosen(options)
// only act if the select has display: none, otherwise chosen is unsupported (iPhone, etc)
if (is_creating_chosen && select.css('display') === 'none') {
// https://github.com/harvesthq/chosen/issues/515#issuecomment-33214050
// only do this if we are initializing chosen (no params, or object params) not calling a method
select.attr('style', 'display:visible; position:absolute; clip:rect(0,0,0,0)');
select.attr('tabindex', -1);
}
return ret
}
之后和我的代码之前将其包括在内,以激活它。我尝试使用Chosen 1.5.0(jQuery版本)和浏览器Firefox,Opera和IE 11。
chosen.jquery[.min].js
选择控件周围没有红框,但提示已正确放置。