HighDots Forums  

Problemi di compatibilità: event.keyCode=0; || evt.which = 0;

Javascript (Italian) Il linguaggio JavaScript (it.comp.lang.javascript)


Discuss Problemi di compatibilità: event.keyCode=0; || evt.which = 0; in the Javascript (Italian) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Valentino
 
Posts: n/a

Default Problemi di compatibilità: event.keyCode=0; || evt.which = 0; - 05-22-2008 , 03:18 PM






Salve a tutti,
ho un problema in merito all'oggetto. Mi spiego, devo strutturare una
funzione che mi intercetti l'evento di inserimento di informazioni
all'interno di un dato campo. In poche parole, chi deve inseririe i dati,
deve inserire solo numeri e non lettere in un dato campo.
La parte html è:
[...]
<input name='qta[X]' size='5' maxlength='5' value='' type='text'
onkeydown='ContrCHR(event);'>
[...]
mentre la funzione che ho scritto è:

function ContrCHR(evt) {
var charCode = (evt.which) ? evt.which : event.keyCode
if ((charCode >= 48 && charCode <= 57) || (charCode >= 96 && charCode <=
105)) {
return true
} else {
nameBrowser = navigator.appName;
if(nameBrowser=="Microsoft Internet Explorer") {
event.keyCode=0;
event.cancelBubble=true;
event.returnValue=false;
} else {
evt.which = 0;
evt.cancelBubble = true;
evt.returnValue=false; //return false;
}
}
}

Il problema sorge nel momento in cui voglio rendere lo script compatibile
per i principale Browser (FF e IE). Infatti, come si può intuire dalla
funzione, una volta che viene intercettato e confrontato il KeyCode, se
questi corriponde ad un numero, tutto va ok; se il KeyCode corrisponde ad un
altro tipo di carattere, lo script, deve impedire che questo carattere venga
scritto all'interno della inputbox nel modulo.
Lo script funziona con IE, mentre con FF mi da un errore: "setting a
property that has only a getter".
Qualcuno di buona volontà, sa come posso risolvere questo problema?
Grazie Valentino



Reply With Quote
  #2  
Old   
P/ero
 
Posts: n/a

Default Re: Problemi di compatibilità: event.keyCode=0; || evt.which = 0; - 05-24-2008 , 07:35 AM






"Valentino" [by Microsoft Outlook Express 6.00.2900.2180] on Thu, 22 May
2008 22:18:12 +0200 wrote:

[come inserire solo numeri in un dato campo]

...skipped!
Quote:
Qualcuno di buona volontà, sa come posso risolvere questo problema?
Scusa, ma un banalissimo:

<script type=text/javascript>
function numOnly() {
var aa=document.getElementById("bb").value.replace(/[^\d]+/,"");
document.getElementById("bb").value=aa;
}
</script>
<input id="bb" type="text" onkeyup="numOnly()" />

non ti andrebbe bene?

--
* b * Il tuo post è privo del MIME, attivalo in OE.
* y * Per impostare correttamente Outlook Express
* Piero * e OE-QuoteFix, puoi consultare Wikipedia:
http://wiki.news.nic.it/GuidaNr_2fOu...e=117271 4805



Reply With Quote
  #3  
Old   
Valentino
 
Posts: n/a

Default Re: Problemi di compatibilità: event.keyCode=0; || evt.which = 0; - 05-24-2008 , 10:06 AM



Bene!
Grazie per la tua risposta. Che ovviamente risolve il problema!
L'unica cosa che comunque mi corrode un po' è il fatto di non poter
intercettare la pressione del tasto. Mi spiego: con la soluzione che mi hai
consigliato (e ch'è funzionante!) si estraggono i valori dal contenuto della
inputbox e gli rivengono dati come nuovo valore. Però, in questo modo
(mandando in esecuzione la funzione), si vede la sostituzione. Mentre,
quello che volevo capire io è perchè con un event.keycode=0 sotto IE
risolvo, mentre nell'analoga funzione sotto FF non va.
Comunque grazie per la soluzione consigliatami.
Saluti, Valentino

"P/ero" <ppiero (AT) woow (DOT) it.INVALID> ha scritto nel messaggio
news:V--08.05.24$1818222218.piroe (AT) response (DOT) ..
Quote:
"Valentino" [by Microsoft Outlook Express 6.00.2900.2180] on Thu, 22 May
2008 22:18:12 +0200 wrote:

[come inserire solo numeri in un dato campo]

...skipped!
Qualcuno di buona volontà, sa come posso risolvere questo problema?

Scusa, ma un banalissimo:

script type=text/javascript
function numOnly() {
var aa=document.getElementById("bb").value.replace(/[^\d]+/,"");
document.getElementById("bb").value=aa;
}
/script
input id="bb" type="text" onkeyup="numOnly()" /

non ti andrebbe bene?

--
* b * Il tuo post è privo del MIME, attivalo in OE.
* y * Per impostare correttamente Outlook Express
* Piero * e OE-QuoteFix, puoi consultare Wikipedia:
http://wiki.news.nic.it/GuidaNr_2fOu...e=117271 4805




Reply With Quote
  #4  
Old   
ZER0
 
Posts: n/a

Default Re: Problemi di compatibilità: event.keyCode=0; || evt.which = 0; - 05-26-2008 , 03:26 AM



On Thu, 22 May 2008 22:18:12 +0200, Valentino wrote:

Quote:
In poche parole, chi deve inseririe i dati,
deve inserire solo numeri e non lettere in un dato campo.

mentre la funzione che ho scritto è:
[cut]

La funzione segue una metodologia di programmazione un po' datata (e
nemmeno tanto corretta allora).

Inoltre non è chiaro:

Quote:
if ((charCode >= 48 && charCode <= 57) || (charCode >= 96 && charCode <= 105))
Se vuoi far immettere solo numeri, come mai hai messo quell'OR?

Quote:
Il problema sorge nel momento in cui voglio rendere lo script compatibile
per i principale Browser (FF e IE). Infatti, come si può intuire dalla
funzione, una volta che viene intercettato e confrontato il KeyCode, se
questi corriponde ad un numero, tutto va ok; se il KeyCode corrisponde ad un
altro tipo di carattere, lo script, deve impedire che questo carattere venga
scritto all'interno della inputbox nel modulo.
Okay. Riprendendo la tua funzione, puoi scrivere qualcosa del tipo:

function filterKeys(evt) {

var charCode = typeof
evt.charCode!="undefined"?evt.charCode:evt.keyCode ;

if ( charCode == 0 )
return true;

return (charCode > 47 && charCode < 58)
}

e nel codice di markup:

<input type="text" onkeypress="return filterKeys(event)" />

Ricordati d'inserire il "return".

Quote:
Lo script funziona con IE, mentre con FF mi da un errore: "setting a
property that has only a getter".
Questo perché quella proprietà puoi solo leggerla ma non impostarla.

Quote:
Qualcuno di buona volontà, sa come posso risolvere questo problema?
Spero di esserti stato d'aiuto, se hai dubbio o vuoi chiarimenti fai
un fischio.

Quote:
Grazie Valentino
De nada.

--
~ Una volta, qui, era tutto <TABLE>.



Reply With Quote
  #5  
Old   
Valentino
 
Posts: n/a

Default Re: Problemi di compatibilità: event.keyCode=0; || evt.which = 0; - 05-26-2008 , 01:58 PM



Grazie per il suggerimento!

"ZER0" <zer0.shock (AT) libero (DOT) it> ha scritto nel messaggio
news:2u8qsr7p2243.dlg (AT) ID-171124 (DOT) news.individual.net...
Quote:
On Thu, 22 May 2008 22:18:12 +0200, Valentino wrote:

In poche parole, chi deve inseririe i dati,
deve inserire solo numeri e non lettere in un dato campo.

mentre la funzione che ho scritto è:
[cut]

La funzione segue una metodologia di programmazione un po' datata (e
nemmeno tanto corretta allora).

Inoltre non è chiaro:

if ((charCode >= 48 && charCode <= 57) || (charCode >= 96 && charCode <=
105))

Se vuoi far immettere solo numeri, come mai hai messo quell'OR?

Il problema sorge nel momento in cui voglio rendere lo script compatibile
per i principale Browser (FF e IE). Infatti, come si può intuire dalla
funzione, una volta che viene intercettato e confrontato il KeyCode, se
questi corriponde ad un numero, tutto va ok; se il KeyCode corrisponde ad
un
altro tipo di carattere, lo script, deve impedire che questo carattere
venga
scritto all'interno della inputbox nel modulo.

Okay. Riprendendo la tua funzione, puoi scrivere qualcosa del tipo:

function filterKeys(evt) {

var charCode = typeof
evt.charCode!="undefined"?evt.charCode:evt.keyCode ;

if ( charCode == 0 )
return true;

return (charCode > 47 && charCode < 58)
}

e nel codice di markup:

input type="text" onkeypress="return filterKeys(event)" /

Ricordati d'inserire il "return".

Lo script funziona con IE, mentre con FF mi da un errore: "setting a
property that has only a getter".

Questo perché quella proprietà puoi solo leggerla ma non impostarla.

Qualcuno di buona volontà, sa come posso risolvere questo problema?

Spero di esserti stato d'aiuto, se hai dubbio o vuoi chiarimenti fai
un fischio.

Grazie Valentino

De nada.

--
~ Una volta, qui, era tutto <TABLE>.




Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.