Estoy tratando de obtener el jQuery Live Search with Quicksilver Style de John Resig para que funcione con un control de selección de formularios múltiples. Su código se basa John Nunemaker's Work desarrollando su código quicksilver.js.jQuery Live Search con Quicksilver Style en un cuadro de lista de selección múltiple
El problema que tengo es que dentro de un cuadro de selección solo Firefox admite .hide() en valores de opción, no puedo descifrar un enfoque ágil para IE, Safari, Opera y Chrome.
He aquí un ejemplo, he introducido el código de John R pero tendrá que tomar quicksilver.js y alojarlo localmente usted mismo. De nuevo, esto funciona muy bien en Firefox, pero la llamada a rows.hide() no hace nada en otros navegadores.
He intentado envolver las etiquetas en un div y ocultar eso, pero no tuve suerte.
¿Alguna idea?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>LiveSearch</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
<script type="text/javascript" src="../jquery/quicksilver.js"></script>
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
$('#q').liveUpdate('#posts').focus();
});
jQuery.fn.liveUpdate = function(list){
list = jQuery(list);
if (list.length) {
// Changed 'li' to 'option' below
var rows = list.children('option'),
cache = rows.map(function(){
return this.innerHTML.toLowerCase();
});
this
.keyup(filter).keyup()
.parents('form').submit(function(){
return false;
});
}
return this;
function filter(){
var term = jQuery.trim(jQuery(this).val().toLowerCase()), scores = [];
if (!term) {
rows.show();
} else {
rows.hide();
cache.each(function(i){
var score = this.score(term);
if (score > 0) { scores.push([score, i]); }
});
jQuery.each(scores.sort(function(a, b){return b[0] - a[0];}), function(){
jQuery(rows[ this[1] ]).show();
});
}
}
};
</script>
</head>
<body>
<form method="get" autocomplete="off" action="">
<div>
<input type="text" value="" name="q" id="q"><br><br>
<select id="posts" multiple name="choices" SIZE="10" style="width: 250px">
<option value="1">The Well-Designed Web</option>
<option value="2">Welcome John Nunemaker</option>
<option value="3">Sidebar Creative: The Next Steps</option>
<option value="4">The Web/Desktop Divide</option>
<option value="5">2007 in Review</option>
<option value="6">Don't Complicate the Solution</option>
<option value="7">Blog to Business</option>
<option value="8">Single Line CSS</option>
<option value="9">The Great Divide</option>
<option value="10">What's in a Name?</option>
</select>
</div>
</form>
</body>
</html>
¿Básicamente, estás buscando una forma de navegador cruzado para ocultar las opciones? – James
Sí, hasta ahora solo funciona en Firefox – kevink