Da lo stesso risultato, non prende il focus, prova.
Ho anche questo nel form
Codice PHP:
<input type="email" name="suoemail"... onblur="emailCampo(); validaMail(); spamMail()">
Da lo stesso risultato, non prende il focus, prova.
Ho anche questo nel form
Codice PHP:
<input type="email" name="suoemail"... onblur="emailCampo(); validaMail(); spamMail()">
Ultima modifica di photoman : 05-05-2016 alle ore 09.49.51
Il solito errore di copia-e-incolla da parte mia, chiedo scusa.
Nella funzione spamMail, in formG.php, la funzione va modificata come segue:
Nel messaggio precedente avevo aggiunto un .value di troppo.Codice:function spamMail() { var f = document.forms.mioform1.suoemail.value; var input = document.forms.mioform1.suoemail; ...
Stessa cosa, non va
Codice PHP:
function spamMail() {
var f = document.forms.mioform1.suoemail.value;
var input = document.forms.mioform1.suoemail;
var xxx = new Array(<?php echo "'" . implode("', '", $blacklist) . "'"; ?>);
var fields = f.split("@");
//Se l'indirizzo non ha dominio, non fare nulla
if (fields.length == 0) {
return true;
}
var domain = fields[fields.length -1 ];
// Se incontri un dominio della blacklist, fermati
for (var i = 0; i < xxx.length; i++) {
if (domain == xxx[i]) {
document.getElementById('spamMail').innerHTML = "• Questa email non è accettata";
input.onblur = function () { input.focus(); }
return false;
}
}
document.getElementById('spamMail').innerHTML = "";
input.onblur = function () {}
return true;
}
Quasi certamente altre parti dello script interferiscono con il focus. In termini pratici, quello che sta succedendo è:
- viene verificato che il dominio è in una blacklist: viene forzato il focus
- viene verificato che l'indirizzo email è valido: il focus può essere rilasciato
- ecc.
Un problema di Race Condition e Side Effect.
Servirebbero un refactoring e un'impostazione più pulita (... e qualche conoscenza di programmazione in più).
L'idea è di ristrutturare le funzioni in modo da renderle dei predicati senza side effects, ovvero funzioni che restituiscono true/false senza però modificare lo stato esterno (in questo caso la funzione di callback onblur e senza stampare messaggi in giro per la pagina), e successivamente usare un controller che interroghi le suddette funzioni e sia lui (e lui solo) ad forzare/rilasciare il focus e stampare messaggi d'errore.
Beh, allora lasciamo così, mi hai già aiutato tanto. Grazie.
La cosa strana è che questa funzione la devo mettere in formG.php, se la metto in script-guest.js come tutte le altre, non funziona.
Io poi con Safari, vedo la finestra del guestbook a tutto schermo, solo con Chrome, Firefox e Opera la vedo ridotta.
Ultima modifica di photoman : 07-05-2016 alle ore 10.52.36