Io ho un problema simile, con Chrome (ma credo che la base comune WebKit sia la causa).
Avendo una routine che permette di navigare da un controllo di un form ad un altro con l'invio, mi capita con il browser di Google che ogni tanto questo faccia il submit da solo del form, anziché il semplice spostamento da un controllo ad un altro.
Ho già impostato return false al termine della funzione, che qui incollo:
codice:
if (document.layers)
document.captureEvents(Event.KEYDOWN);
document.onkeydown =
function (evt,who,elemindex) {
var keyCode = evt ? (evt.which ? evt.which : evt.keyCode) : event.keyCode;
if (keyCode == 13){
alert('tasto');
var who = evt ? (evt.target ? evt.target : evt.srcElement) : event.srcElement;
if (who.name=='') return;
getIndex(who.name,who.sourceIndex);
if(IndiceForm===null) return;
var trovato=false;
var divPartenza=getParent(IndiceForm);
for (var y=IndiceForm; y><document.forms.length; y++){
if (trovato) break;
if (getParent(y)!=divPartenza) break;
for (var z=IndiceElemento+1; z><document.forms[y].elements.length; z++){
trovato=false;
if (document.forms[y].elements[z].type=='hidden'){
continue;
}
else if (document.forms[y].elements[z].disabled){
continue;
}
else{
trovato=true;
document.forms[y].elements[z].focus();
if (document.forms[y].elements[z].type=='text') document.forms[y].elements[z].select();
break;
}
}
IndiceElemento=-1;
}
return false;
}
}
ma il risultato non cambia: Chrome continua a fare il submit del form da solo.
Come posso fare?