2009-03-05 8 views
0

J'ai une page de préférences utilisateur dans laquelle l'utilisateur peut taper son mot de passe actuel, le nouveau mot de passe et confirmer le nouveau mot de passe. Lorsque l'utilisateur soumet le formulaire, il les envoie à une action. Le problème est que lorsque le formulaire est soumis, les champs de mot de passe restent remplis. Je veux qu'ils disparaissent. J'ai essayé javascript mais quand j'utilise document.preferences.submit(), le submit n'est pas renvoyé, ou l'action n'est pas déclenchée, ou les deux. Voici le code:Les champs de mot de passe ne sont pas désactivés sur submit dans asp.net mvc

<script language="JavaScript" type="text/javascript"> 
    function clearpwd() { 
     document.preferences.submit(); 
     document.preferences.currentPassword.value = ''; 
     document.preferences.newPassword.value = ''; 
     document.preferences.confirmPassword.value = ''; 
    } 
</script> 
<% using (Html.BeginForm("ChangePreferences", "Home", FormMethod.Post, new { id="preferences", name="preferences" })) { %> 
     <div> 
      <div style="text-align:left; width:500px;"> 
      <div class="FormLabel">User Information:</div> 
      <table border="0" cellpadding="4" cellspacing="0"> 
       <tr> 
        <td>First Name:</td> 
        <td> 
         <%= Html.TextBox("firstName")%> 
         <%= Html.ValidationMessage("FirstName") %> 
        </td> 
       </tr> 
       <tr> 
        <td>Last Name:</td> 
        <td> 
         <%= Html.TextBox("lastName") %> 
         <%= Html.ValidationMessage("LastName") %> 
        </td> 
       </tr> 
       <tr> 
        <td>New email:</td> 
        <td> 
         <%= Html.TextBox("email")%> 
         <%= Html.ValidationMessage("Email") %> 
        </td> 
       </tr> 
       <tr> 
        <td>Billing Method:</td> 
        <td> 
          <%=Html.RadioButton("billingMethod", 'E', new { id = "BillingMethod_E", value = 'E' })%><label for="BillingMethod_E">Electronic</label> 

          <%=Html.RadioButton("billingMethod", 'M', new { id = "BillingMethod_M", value = 'M' })%><label for="BillingMethod_M">Mailing</label> 
        </td> 
       </tr> 

      </table> 
      </div> 
      <br /><br /> 

      <div style="text-align:left; width:500px;"> 
      <div class="FormLabel">Login and Security Information:</div> 
      <table border="0" cellpadding="4" cellspacing="0"> 
       <tr> 
        <td>Current Password</td> 
        <td> 
         <%= Html.Password("currentPassword") %> 
         <%= Html.ValidationMessage("currentPassword") %> 
        </td> 
       </tr> 
       <tr> 
        <td>New password:</td> 
        <td> 
         <%= Html.Password("newPassword") %> 
         <%= Html.ValidationMessage("newPassword") %> 
        </td> 
       </tr> 
       <tr> 
        <td>Confirm new password:</td> 
        <td> 
         <%= Html.Password("confirmPassword") %> 
         <%= Html.ValidationMessage("confirmPassword") %> 
        </td> 
       </tr> 
       <tr> 
        <td>Security Question:</td> 
        <td> 
         <%= Html.TextBox("securityQuestion") %> 
         <%= Html.ValidationMessage("SecurityQuestion") %> 
        </td> 
       </tr> 
       <tr> 
        <td>Security Answer:</td> 
        <td> 
         <%= Html.Password("securityAnswer") %> 
         <%= Html.ValidationMessage("SecurityAnswer") %> 
        </td> 
       </tr>   
      </table> 
      </div> 
      <br /><br /> 
      <table> 
       <tr> 
        <td></td> 
        <td><input type="submit" value="Change Preferences" onclick="clearpwd()" /></td> 
       </tr> 
      </table> 
     </div> 
    <% } %> 
+0

Pas vraiment une réponse, mais ... avez-vous vérifié que votre gestionnaire de mots de passe dans le navigateur ne stocke pas et ne remplit pas les champs de mot de passe? :) – muerte

Répondre

1
  • Pour JavaScript de débogage problèmes, mieux publier le code HTML généré
  • Pour le débogage des problèmes JavaScript plus facile, utilisez le navigateur Firefox avec Firebug Extension.

Éditer: Vous essayez d'effacer le mot de passe, une fois la page soumise. Après la page de soumission navigue vers une autre page, donc je pense, JavaScript n'affectera pas les éléments DOM après cela.

Vous pouvez essayer la séquence suivante.

  • Stockez le nom d'utilisateur et le mot de passe dans les variables JavaScript.
  • efface les valeurs Nom d'utilisateur et Mot de passe.
  • Afficher sur la page contenant les valeurs enregistrées.
0

Il se peut que votre navigateur remplisse le champ de mot de passe si vous l'avez configuré pour mémoriser votre mot de passe. Cela m'est arrivé.

Questions connexes