Il modulo di login Javascript non viene inviato quando l'utente fa clic su Invio




javascript tutorial (6)

Sto lavorando su un semplice login javascript per un sito, e ho inventato questo:

<form id="loginwindow">
<strong>Login to view!</strong>
<p><strong>User ID:</strong>
  <input type="text" name="text2">
</p>
<p><strong>Password:</strong>
<input type="password" name="text1"><br>
  <input type="button" value="Check In" name="Submit" onclick=javascript:validate(text2.value,"username",text1.value,"password") />
</p>

</form>
<script language = "javascript">

function validate(text1,text2,text3,text4)
{
 if (text1==text2 && text3==text4)
 load('album.html');
 else 
 {
  load('failure.html');
 }
}
function load(url)
{
 location.href=url;
}
</script>

... che funziona tranne una cosa: premere invio per inviare il modulo non fa nulla. Ho la sensazione che sia perché ho usato "onclick", ma non sono sicuro di cosa invece usare. Pensieri?

Okay sì, sono ben consapevole di quanto sia fragile questo è il livello di sicurezza. Non è per niente particolarmente top secret, quindi non è un grosso problema, ma se voi ragazzi poteste elaborare i vostri pensieri con il codice, mi piacerebbe vedere le vostre idee. il codice che ho elencato è letteralmente tutto ciò che sto lavorando a questo punto, quindi posso ricominciare da capo se necessario.


Metti lo script direttamente nel tuo documento html. Modificare il valore onclick con la funzione che si desidera utilizzare. Lo script nell'html indicherà il modulo da inviare quando l'utente preme Invio o premere il pulsante di invio.

 <form id="Form-v2" action="#">

<input type="text" name="search_field"  placeholder="Enter a movie" value="" 
id="search_field" title="Enter a movie here" class="blink search-field"  />
<input type="submit" onclick="" value="GO!" class="search-button" />        
 </form>

    <script>
    //submit the form
    $( "#Form-v2" ).submit(function( event ) {
      event.preventDefault();
    });
         </script>

è perché non è un modulo che invia, quindi non c'è nessun evento da attivare quando l'utente preme Invio. Un'alternativa alle opzioni di invio del modulo sopra sarebbe quella di aggiungere un listener di eventi per il modulo di input per rilevare se l'utente ha premuto Invio.

<input type="password" name="text1" onkeypress="detectKey(event)">

Invece di <input type = "button">, usa <input type = "submit">. Puoi inserire il tuo codice di convalida nel modulo sul gestore di invio:

<form id = "loginwindow" onsubmit = "validate (...)">


Forse puoi provare questo:

<form id="loginwindow" onsubmit='validate(text2.value,"username",text1.value,"password")'>
<strong>Login to view!</strong>
<p><strong>User ID:</strong>
   <input type="text" name="text2">
</p>
<p><strong>Password:</strong>
<input type="password" name="text1"><br>
   <input type="submit" value="Check In"/>
</p>

</form>

Come altri hanno sottolineato, ci sono altri problemi con la tua soluzione. Ma questo dovrebbe rispondere alla tua domanda.


Sicuramente questo è troppo poco sicuro in quanto tutti possono crearlo in un secondo ...

- Solo il modo pseudo-sicuro di fare js-login è il seguente:

<form action="http://www.mySite.com/" method="post" onsubmit="this.action+=this.theName.value+this.thePassword.value;">
  Name: <input type="text" name="theName"><br>
  Password: <input type="password" name="thePassword"><br>
  <input type="submit" value="Login now">
</form>

My Thought = Foro di sicurezza enorme. Chiunque può visualizzare il nome utente e la password.

Più pertinente alla tua domanda: - Hai due eventi in corso.

  1. Pulsante clic dell'utente
  2. L'utente preme Invio.

La chiave di invio invia il modulo, ma non fa clic sul pulsante.

Inserendo il codice nel metodo onsubmit del modulo, il codice verrà eseguito quando viene inviato il modulo. Modificando il tipo di input del pulsante da inviare, il pulsante invierà il modulo nello stesso modo in cui lo fa il pulsante Invio.

Il tuo codice verrà quindi eseguito per entrambi gli eventi.





html-input