• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

olor

select

4 mensagens neste tópico

Tenho um select com dezenas de options (países). Quero que ao carregar numa tecla, vá para o país mais proximo tendo em conta o acumular de teclas premidas mas, é levantado um qualquer evento que nao consigo identificar que faz com que vá sempre para o país da tecla premida. O codigo desenvolvido é o seguinte:

<div style="width: 202px; margin: 100px auto 0 auto;">
	<form name="form2">

		<div style="position: relative; margin: 5px 0 5px 0; height: 30px;">

			<div style="position: absolute; top: 0; left: 0; width: 200px; z-index: 1;">
				<select name="s_country" onKeypress="displayunicode(event)">
					<option value ="Afghanistan">Afghanistan</option>
					<option value ="Albania">Albania</option>
					<option value ="Algeria">Algeria</option>
					<option value ="Andorra">Andorra</option>
					<option value ="Angola">Angola</option>
					<option value ="Antigua and Barbuda">Antigua and Barbuda</option>
					<option value ="Argentina">Argentina</option>
					<option value ="Armenia">Armenia</option>
					<option value ="Australia">Australia</option>
					<option value ="Austria">Austria</option>
					<option value ="Azerbaijan">Azerbaijan</option>
					<option value ="Bahamas">Bahamas</option>
					<option value ="Bahrain">Bahrain</option>
					<option value ="Bangladesh">Bangladesh</option>
					<option value ="Barbados">Barbados</option>
					<option value ="Belarus">Belarus</option>
					<option value ="Belgium">Belgium</option>
					<option value ="Belize">Belize</option>
					<option value ="Benin">Benin</option>
					<option value ="Bhutan">Bhutan</option>
					<option value ="Bolivia">Bolivia</option>
					<option value ="Bosnia and Herzegovina">Bosnia and Herzegovina</option>
					<option value ="Botswana">Botswana</option>
					<option value ="Brazil">Brazil</option>
					<option value ="Brunei">Brunei</option>
					<option value ="Bulgaria">Bulgaria</option>
					<option value ="Burkina Faso">Burkina Faso</option>
					<option value ="Burundi">Burundi</option>
					<option value ="Cambodia">Cambodia</option>
					<option value ="Cameroon">Cameroon</option>
					<option value ="Canada">Canada</option>
					<option value ="Cape Verde">Cape Verde</option>			
					<option value ="Central African Republic">Central African Republic</option>
					<option value ="Chad">Chad</option>
					<option value ="Chile">Chile</option>
					<option value ="China">China</option>
					<option value ="Colombia">Colombia</option>
					<option value ="Comoros">Comoros</option>
					<option value ="Congo (Brazzaville)">Congo (Brazzaville)</option>
					<option value ="Congo, Democratic Republic of the">Congo, Democratic Republic of the</option>
					<option value ="Costa Rica">Costa Rica</option>
					<option value ="Côte d'Ivoire">Côte d'Ivoire</option>
					<option value ="Croatia">Croatia</option>
					<option value ="Cuba">Cuba</option>
					<option value ="Cyprus">Cyprus</option>
					<option value ="Czech Republic">Czech Republic</option>
					<option value ="Canada">Canada</option>
					<option value ="Denmark">Denmark</option>			
					<option value ="Djibouti">Djibouti</option>
					<option value ="Dominica">Dominica</option>
					<option value ="Dominican Republic">Dominican Republic</option>
					<option value ="East Timor">East Timor</option>
					<option value ="Ecuador">Ecuador</option>
					<option value ="Egypt">Egypt</option>
					<option value ="El Salvador">El Salvador</option>
					<option value ="Equatorial Guinea">Equatorial Guinea</option>
					<option value ="Eritrea">Eritrea</option>
					<option value ="Estonia">Estonia</option>
					<option value ="Ethiopia">Ethiopia</option>
					<option value ="Fiji">Fiji</option>
					<option value ="Filipins">Filipins</option>
					<option value ="Finland">Finland</option>
					<option value ="France">France</option>
					<option value ="Gabon">Gabon</option>	
					<option value ="Gambia, The">Gambia, The</option>
					<option value ="Georgia">Georgia</option>
					<option value ="Germany">Germany</option>
					<option value ="Ghana">Ghana</option>
					<option value ="Greece">Greece</option>
					<option value ="Grenada">Grenada</option>
					<option value ="Guatemala">Guatemala</option>
					<option value ="Guinea">Guinea</option>
					<option value ="Guinea-Bissau">Guinea-Bissau</option>
					<option value ="Guyana">Guyana</option>
					<option value ="Haiti">Haiti</option>
					<option value ="Honduras">Honduras</option>
					<option value ="Hungary">Hungary</option>
					<option value ="Iceland">Iceland</option>
					<option value ="India">India</option>
					<option value ="Indonesia">Indonesia</option>	
					<option value ="Iran">Iran</option>
					<option value ="Iraq">Iraq</option>
					<option value ="Ireland">Ireland</option>
					<option value ="Israel">Israel</option>
					<option value ="Italy">Italy</option>
					<option value ="Jamaica">Jamaica</option>
					<option value ="Japan">Japan</option>
					<option value ="Jordan">Jordan</option>
					<option value ="Kazakhstan">Kazakhstan</option>
					<option value ="Kenya">Kenya</option>
					<option value ="Kiribati">Kiribati</option>
					<option value ="Korea, North">Korea, North</option>
					<option value ="Korea, South">Korea, South</option>
					<option value ="Kuwait">Kuwait</option>
					<option value ="Kyrgyzstan">Kyrgyzstan</option>
					<option value ="Laos">Laos</option>	
					<option value ="Latvia">Latvia</option>
					<option value ="Lebanon">Lebanon</option>
					<option value ="Lesotho">Lesotho</option>
					<option value ="Liberia">Liberia</option>
					<option value ="Libya">Libya</option>
					<option value ="Liechtenstein">Liechtenstein</option>
					<option value ="Lithuania">Lithuania</option>
					<option value ="Luxembourg">Luxembourg</option>
					<option value ="Macedonia">Macedonia</option>
					<option value ="Madagascar">Madagascar</option>
					<option value ="Malawi">Malawi</option>
					<option value ="Malaysia">Malaysia</option>
					<option value ="Maldives">Maldives</option>
					<option value ="Mali">Mali</option>
					<option value ="Malta">Malta</option>
					<option value ="Marshall Islands">Marshall Islands</option>	
					<option value ="Mauritania">Mauritania</option>
					<option value ="Mauritius">Mauritius</option>
					<option value ="Mexico">Mexico</option>
					<option value ="Micronesia">Micronesia</option>
					<option value ="Moldova">Moldova</option>
					<option value ="Monaco">Monaco</option>
					<option value ="Mongolia">Mongolia</option>
					<option value ="Morocco">Morocco</option>
					<option value ="Mozambique">Mozambique</option>
					<option value ="Myanmar">Myanmar</option>
					<option value ="Namibia">Namibia</option>
					<option value ="Nauru">Nauru</option>
					<option value ="Nepal">Nepal</option>
					<option value ="Netherlands">Netherlands</option>
					<option value ="New Zealand">New Zealand</option>
					<option value ="Nicaragua">Nicaragua</option>	
					<option value ="Niger">Niger</option>
					<option value ="Nigeria">Nigeria</option>
					<option value ="Norway">Norway</option>
					<option value ="Oman">Oman</option>
					<option value ="Pakistan">Pakistan</option>
					<option value ="Palau">Palau</option>
					<option value ="Panama">Panama</option>
					<option value ="Papua New Guinea">Papua New Guinea</option>
					<option value ="Paraguay">Paraguay</option>
					<option value ="Peru">Peru</option>
					<option value ="Philippines">Philippines</option>
					<option value ="Poland">Poland</option>
					<option value ="Portugal">Portugal</option>
					<option value ="Qatar">Qatar</option>
					<option value ="Romania">Romania</option>
					<option value ="Russia">Russia</option>
					<option value ="Rwanda">Rwanda</option>
					<option value ="Saint Kitts and Nevis">Saint Kitts and Nevis</option>
					<option value ="Saint Lucia">Saint Lucia</option>
					<option value ="Saint Vincent and The Grenadines">aint Vincent and The Grenadines</option>
					<option value ="Samoa">Samoa</option>
					<option value ="San Marino">San Marino</option>
					<option value ="Sao Tome and Principe">Sao Tome and Principe</option>
					<option value ="Saudi Arabia">Saudi Arabia</option>
					<option value ="Senegal">Senegal</option>
					<option value ="Serbia and Montenegro">Serbia and Montenegro</option>
					<option value ="Seychelles">Seychelles</option>
					<option value ="Sierra Leone">Sierra Leone</option>
					<option value ="Singapore">Singapore</option>
					<option value ="Slovakia">Slovakia</option>
					<option value ="Slovenia">Slovenia</option>
					<option value ="Solomon Islands">Solomon Islands</option>	
					<option value ="Somalia">Somalia</option>
					<option value ="South Africa">South Africa</option>
					<option value ="Spain">Spain</option>
					<option value ="Sri Lanka">Sri Lanka</option>
					<option value ="Sudan">Sudan</option>
					<option value ="Suriname">Suriname</option>
					<option value ="Swaziland">Swaziland</option>
					<option value ="Sweden">Sweden</option>
					<option value ="Switzerland">Switzerland</option>
					<option value ="Syria">Syria</option>
					<option value ="Taiwan">Taiwan</option>
					<option value ="Tajikistan">Tajikistan</option>
					<option value ="Tanzania">Tanzania</option>
					<option value ="Thailand">Thailand</option>
					<option value ="Togo">Togo</option>
					<option value ="Tonga">Tonga</option>
					<option value ="Trinidad and Tobago">Trinidad and Tobago</option>
					<option value ="Tunisia">Tunisia</option>
					<option value ="Turkey">Turkey</option>
					<option value ="Turkmenistan">Turkmenistan</option>
					<option value ="Tuvalu">Tuvalu</option>
					<option value ="Uganda">Uganda</option>
					<option value ="Ukraine">Ukraine</option>
					<option value ="United Arab Emirates">United Arab Emirates</option>
					<option value ="United Kingdom">United Kingdom</option>
					<option value ="United States">United States</option>
					<option value ="Uruguay">Uruguay</option>
					<option value ="Uzbekistan">Uzbekistan</option>
					<option value ="Vanuatu">Vanuatu</option>
					<option value ="Vatican City">Vatican City</option>
					<option value ="Venezuela">Venezuela</option>
					<option value ="Vietnam">Vietnam</option>
					<option value ="Western Sahara">Western Sahara</option>
					<option value ="Yemen">Yemen</option>
					<option value ="Zambia">Zambia</option>
					<option value ="Zimbabwe">Zimbabwe</option>
				</select>
				<!--input type="text" name="sugestao" style="background-color: #fff; border: 1px solid #999; width: 200px; padding: 2px" disabled /-->
			</div>

			<!--div style="position: absolute; top: 0; left: 0; width: 200px; z-index: 2;">
				<input completa="off" type="text" name="valor" style="background: none; color:#39f; border: 1px solid #999; width: 200px; padding: 2px" onfocus="get_value()" onkeyup="get_value()" />
			</div>

			<div id="sug_btn" style="position: absolute; top: 5px; right: 5px; z-index: 3; display: none;">
				<a href="#" onclick="set_value()"><img src="ok.gif" width="10" height="10" border="0" align="textbottom"></a>
			</div-->

		</div>

	</form>
	</div>

A script é a seguinte:

function displayunicode(e)
{
var k=0;
var unicode=e.keyCode? e.keyCode : e.charCode
//alert(String.fromCharCode(unicode));

sug=sug+String.fromCharCode(unicode);
//Valor a escrever

var len=sug.length;
//alert(document.forms['form2'].s_country.options[0].value.substr(0,3).toLowerCase());
//alert(unicode);

for(k=0; k<document.forms['form2'].s_country.length;k++)
{
	if(sug.toLowerCase()==document.forms['form2'].s_country.options[k].value.substr(0,len).toLowerCase())
	{	
		document.forms['form2'].s_country.value=document.forms['form2'].s_country.options[k].value;
		alert(sug.toLowerCase()+"="+document.forms['form2'].s_country.options[k].value.substr(0,len).toLowerCase());	

		//document.forms['address_frm'].sug_country.select();

		//alert(document.forms['form2'].s_country.options[k].select();
		//sug_disp=document.forms['form2'].s_country.value;
		break;
	}
	//else
		//document.forms['form2'].s_country.value=document.forms['form2'].s_country.options[0].value;
}	
}

Se alguém tiver uma pista, agradeço!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aqui está uma dúvida interessante !

Mas não estou a vêr como a resolver !  :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se isso for possível, é com javascript/vbscript e não com html... mas algo me diz que não é possível fazer isso numa página.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ser possivel, até é capaz de ser... usando ajax e alterando a rotina que permite fazer o suggest para que, em vez de mostrar por baixo de um input as palavras que são sugeridas, altere as opções do select...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora