problema con cambiamento automatico di value in un input type text

Instabile

Nuovo Utente
4 Mag 2012
8
0
0
Ciao a tutti!

Ho una select dove seleziono una scelta, ecco un esempio parziale, per non mettere proprio tutte le opzioni:

Codice:
<select name="tipo" id="tipo" class="selecttext">
   <option  value="APP">Appartamento</option>
   <option  value="VIL">Villa</option>
   <option  value="COM">Locale commerciale</option>    
   <option  value="TED">Terreno</option>
</select>



Ho alcuni script tra gli head:

Codice:
<script>
function change(object){
	var value=object.value;
	if(value=="VIL" || value=="APP" || value=="UFF" ) {
		document.getElementsByName("areamin")[0].value="vani min";
		document.getElementsByName("areamax")[0].value="vani max";
	}

	else {
		document.getElementsByName("areamin")[0].value="mq min";
		document.getElementsByName("areamax")[0].value="mq max";
	}

}
</script>

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>

<script type="text/javascript" src="js/italia.js"></script>


<script type="text/javascript">

function numbersOnly(oToCheckField, oKeyEvent) {
	return oKeyEvent.charCode === 0 || /\d/.test(String.fromCharCode(oKeyEvent.charCode));
}
</script>





E poi i due input type text con i vari controlli dove inserisco o i mq min e max, oppure i vani min e max, dipende dalla selezione che faccio nella select qui sopra:

Codice:
<td>
	<input type="text" class="inputsearchdown"  value="mq min" name="areamin" onFocus="if (this.value=='mq min') {this.value=''};" onBlur="if (this.value=='') {this.value='mq min'};" onkeypress="return numbersOnly(this, event);" onpaste="return false;" onchange="return soloN(this);" />
</td>

<td style="padding-left:10px;">
	<input type="text" class="inputsearchdown"  value="mq max" name="areamax" onFocus="if (this.value=='mq max') {this.value=''};" onBlur="if (this.value=='') {this.value='mq max'};" onkeypress="return numbersOnly(this, event);" onpaste="return false;" onchange="return soloN(this);" />
</td>




Il problema per voi che capite di javascript sarà di sicuro facile da individuare, io non saprei proprio come risolvere perché non conosco il linguaggio.
In pratica come dedurrete dal codice, grazie ad alcuni utenti di questo forum, ho fatto in modo di avere dei controlli dei campi, controlli che, viste le esigenze sono diventati più complicati da gestire. Si nota che non posso inserire punteggiatura ma solo numeri, e inoltre che se clicco sull'input, il suggerimento scompare, e ricompare nel caso non scrivo niente, e poi che se cambio la selezione della select mq min e mq max diventeranno vani min e vani max, dipende appunto dalla selezione che faccio.

Ora si sono verificati i seguenti problemi...:

Se cambio la selezione con la select il suggerimento cambia, e fin qui va bene, ma non scompare più con il click del mouse, lo devo cancellare con la tastiera, il che non va bene! Inoltre se lo cancello con la tastiera e lascio il campo vuoto, da vani min (del primo campo ad esempio) mi ritorna mq min, invece mi serve il suggerimento che da con la selezione della select. Come posso risolvere queste due cose?

Grazie siete sempre gentili!
 
Ciao,
ho aggiunto la funzione cancella() che si occuperà di azzerare o ripristinare il campo passato

ho modificato la funzione change() per assegnare anche il value di default ai campi

ho aggiunto l'evento onchange nella select che ti eri scordato di postare

ho tolto gli eventi onpaste e onchange dagli input (onchange non credo possa essere applicato ad un input l'altro non lo conosco e non ne capisco l'utilità)

ho tolto il primo parametro alla funzione numbersOnly() poiche inutile in questo esempio

ho tolto il value dall Html degli input e ho aggiunto una option vuota alla select

Non mi pare di aver fatto altro :-) . Provalo cosi e fai sapere

Codice:
<script type="text/javascript">
    function change(object){
        var value=object.value;
        if(value=="VIL" || value=="APP" || value=="UFF" ) {
            var min = document.getElementsByName("areamin")[0];
            min.value="vani min";
            min.defaultValue="vani min";
            
            var max =document.getElementsByName("areamax")[0];            
            max.value="vani max";
            max.defaultValue="vani max";
        }else {
            var min = document.getElementsByName("areamin")[0];
            min.value="mq min";
            min.defaultValue="mq min";
            
            var max =document.getElementsByName("areamax")[0];            
            max.value="mq max";
            max.defaultValue="mq max";
        }
    }
    function cancella(campo){
       
        if (campo.defaultValue == campo.value)  {
            campo.value = '';
        }    
        else if (campo.value == '') {
            campo.value = campo.defaultValue;    
        }
    }
</script>
<script type="text/javascript">
    function numbersOnly(oKeyEvent) {
        return oKeyEvent.charCode === 0 || /\d/.test(String.fromCharCode(oKeyEvent.charCode));
    }
</script>
<select name="tipo" id="tipo" class="selecttext" onchange="change(this)">
    <option  value=""></option>
    <option  value="APP">Appartamento</option>
    <option  value="VIL">Villa</option>
    <option  value="COM">Locale commerciale</option>    
    <option  value="TED">Terreno</option>
</select>
<table>
    <tr>
        <td>
            <input type="text" class="inputsearchdown" name="areamin" onFocus="cancella(this)" onBlur="cancella(this)" onkeypress="return numbersOnly(event);" />
        </td>

        <td style="padding-left:10px;">
            <input type="text" class="inputsearchdown" name="areamax" onFocus="cancella(this)" onBlur="cancella(this)" onkeypress="return numbersOnly(event);" />
        </td>
    </tr>
</table>

Ricordati che la sintassi è molto importante: se sbagli a mettere una virgola non ti funziona piu niente

L'ho testato in locale e pare funzionare.

ciao

ho modificato la chiamata a numbersOnly() nel secondo input (avevo sbagliato :-))
 
Ultima modifica:

Discussioni simili