copia e incolla questo esempio
codice:
<script>
function addSearchListener() {
var c = document.getElementById('cerca');
c.onkeyup = function() {
document.getElementById('errormsg').innerHTML = '';
document.getElementById('warnmsg').innerHTML = '';
findOnSelect('listavalori', this.value);
};
};
function findOnSelect(sel, value) {
var s = document.getElementById(sel);
var opts = s.getElementsByTagName('option');
resetPrevSelectedValue(s);
matchValue(opts, value);
};
function resetPrevSelectedValue(s) {
var opts = s.getElementsByTagName('option')
for (i=0; i<opts.length; i++) opts[i].removeAttribute('selected');
s.selectedIndex = 0;
};
function matchValue(opts, value) {
var nomatch = true;
var othervalues = false;
var re = new RegExp("^"+value+"$");
var reall = new RegExp("^"+value);
var renext = new RegExp("^"+value+"[0-9]");
for (i=0; i<opts.length; i++) {
if (opts[i].value.match(reall)) {
nomatch = false;
break;
}
}
if (nomatch) {
document.getElementById('errormsg').innerHTML = 'Sorry, no match for ['+ value +']';
return;
}
for (i=0; i<opts.length; i++) {
if (opts[i].value.match(re)) {
opts[i].selected = 'selected';
break;
}
}
for (i=0; i<opts.length; i++) {
if (opts[i].value.match(renext)) {
othervalues = true;
break;
}
}
if (!othervalues) {
document.getElementById('warnmsg').innerHTML = 'No more options match with ['+ value +']';
}
};
window.onload = function() {
addSearchListener();
};
</script>
<body>
<span id="errormsg" style="font: 10px Verdana; color: #c33"></span>
<span id="warnmsg" style="font: 10px Verdana; color: #3c3"></span>
<input type="text" id="cerca" />
<select name="listavalori" id="listavalori">
<option value="">No value match</option>
<option value="1">1</option>
<option value="12">12</option>
<option value="125">125</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="35">35</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="756">756</option>
</select>
</body>
Ciao