Aggiungi suffisso al campo modulo

Ho alcuni (più di mille) utenti che insistono sull’accesso solo con i loro nomi, ma un sistema che insiste sull’avere fornito l’indirizzo e-mail completo (nome + @ my-mail.com). Qual è una soluzione intelligente per aggiungere un suffisso a un campo senza disturbare l’utente?

Il modulo:

Ho giocato con la funzione key-up per il campo, ma non è stato di grande aiuto.

  $('#email').keyup(function(e){ if(this.value.length > 12){ this.value = this.value + '@my-mail.com'; if( this.value.indexOf('@my-mail.com') <= 0 ){ this.value = String.fromCharCode(e.which) + '@my-mail.com'; } });  

Considero una soluzione che manipola il campo appena prima della submission molto più “corretta” (purtroppo non ho accesso al file PHP che sta ricevendo la submission). Così ho provato anche con la funzione di invio, anche questo non ha funzionato.

  $( "#login_form" ).submit(function( event ) { ("#email").value = ("#email").value + '@my-mail.com'; });  

Qualcuno ha qualche consiglio su come risolverlo usando la funzione di invio o un’altra idea che sembra essere migliore?

 $('#email').change(function() { var val = $(this).val(); if(val.indexOf('@my-mail.com') == -1) $(this).val(val+'@my-mail.com'); }); 

http://jsfiddle.net/g4oLtfw7/

Questo aggiungerà il suffisso ‘@ my-mail.com’ se non fa già parte del valore di input. Se si desidera consentire altri tipi di e-mail, ma in modo predefinito su “my-mail.com” in caso contrario, provare questo:

 $('#email').change(function() { var val = $(this).val(); if(val.indexOf('@') == -1) $(this).val(val+'@my-mail.com'); }); 

O:

 $('#login_form').submit(function (e) { var email = $('#email'), user = email.val().split('@')[0], domain = '@my-mail.com'; if (email.val().toLowerCase() !== (user + domain).toLowerCase()) { email.val(user + domain); } }); 

o

 $('#email').change(function (e) { var email = $(this), user = email.val().split('@')[0], domain = '@my-mail.com'; if (email.val().toLowerCase() !== (user + domain).toLowerCase()) { email.val(user + domain); } }); 

è come mi avvicinerei a questo (violino obbligatorio: http://jsfiddle.net/e84v7nat/ ).

Questo approccio garantisce che l’utente abbia un dominio specificato e che il dominio sia corretto. Se il nome utente fa distinzione tra maiuscole e minuscole, rimuovere le chiamate a .toLowerCase .