Donc j'ai quelques <select>
étiquettes que je voudrais montrer tout le contenu dans IE. J'ai regardé autour et trouvé un fewfixes, mais je ne veux pas inclure YUI puisque j'utilise déjà jQuery ailleurs, et préférerais garder les sélections sur la page au lieu de le remplacer par DIVs.L'application de css avec jQuery s'arrête <select> de montrer la liste déroulante
Dans le code que j'ai trouvé, FF3 fonctionne très bien. Dans Internet Explorer (6,7,8), le premier clic sur le <select>
fait clignoter le menu déroulant puis disparaît. J'ai essayé focus
et mousedown
à la place de l'événement click
dans le code, sans succès.
Si je supprime les deux paramètres de element.css
dans autoWidth
, les menus déroulants fonctionnent comme prévu, sans avoir la bonne largeur. Est-ce que quelqu'un sait ce qui causerait le réglage du CSS pour faire échouer le menu déroulant dans IE?
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
var count = 0;
autoWidth = function(e) {
$element = $(e.target)
$element.css("width","auto");
if($element.width() < $element.data("originalWidth"))
{
$element.css("width", $element.data("originalCSSWidth"));
}
}
resetWidth = function(e) {
$element = $(e.target)
$element.css("width", $element.data("originalCSSWidth"));
$("#counter").text(++count);
}
recordEvent = function(e) {
$("#event").text($("#event").text() + " " + e.type);
}
dropDownIEWidthFix = function() {
//if($.browser.msie)
//{
$dropDown = $(this);
$dropDown.data("originalWidth", $dropDown.width());
$dropDown.data("originalCSSWidth", $dropDown.css("width"));
$dropDown.blur(recordEvent);
$dropDown.blur(resetWidth);
$dropDown.change(recordEvent);
$dropDown.change(resetWidth);
$dropDown.click(recordEvent);
$dropDown.click(autoWidth);
//}
};
$(function() {
$("select.officeItemList").each(dropDownIEWidthFix);
});
function trackingSelectionChanged(select)
{
$("#event").text($("#event").text() + " inlineOnChange");
}
</script>
</head>
<body>
<div style="overflow:hidden;width:148px;">
<select class="officeItemList" style="width:148px;" onchange="trackingSelectionChanged(this);">
<option value="1">erasersdffffffffffeeefefsdfsdfsdfsdfsdfsdfsdfsdfsdfdsfsdfefesf</option>
<option value="3">pencil</option>
<option value="4">ruler</option>
<option value="5">ink</option>
<option value="7">A4 paper</option>
<option value="8">A3 paper</option>
<option value="9">erasersdffffffffffeeefefsdfsdfsdfsdfsdfsdfsdfsdfsdfdsfsdfefesf</option>
<option value="10">executive</option>
<option value="11">janitor</option>
<option value="12">developer</option>
</select>
</div>
<div style="overflow:hidden;width:160px;">
<select class="officeItemList" style="width:160px;" onchange="trackingSelectionChanged(this);">
<option value="3">pencil</option>
<option value="4">ruler</option>
<option value="5">ink</option>
<option value="7">A4 paper</option>
<option value="8">A3 paper</option>
<option value="9">erasersdffffffffffeeefefsdfsdfsdfsdfsdfsdfsdfsdfsdfdsfsdfefesf</option>
<option value="10">executive</option>
<option value="11">janitor</option>
<option value="12">developer</option>
</select>
</div>
<div style="overflow:hidden;width:160px;">
<select class="officeItemList" style="width:160px;" onchange="trackingSelectionChanged(this);">
<option value="1">eee</option>
<option value="3">pencil</option>
<option value="4">ruler</option>
<option value="5">ink</option>
<option value="7">A4 paper</option>
<option value="8">A3 paper</option>
<option value="9">ffff</option>
<option value="10">executive</option>
<option value="11">janitor</option>
</select>
</div>
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
AdjustWidth fired :<span id="counter"></span> times
<div id="event"></div>
</body>