Campi password non cancellati al momento dell'invio in asp.net mvc
-
03-07-2019 - |
Domanda
Ho una pagina delle preferenze dell'utente in cui l'utente può digitare la sua password attuale, la nuova password e confermare la nuova password. Quando l'utente invia il modulo, lo invia a un'azione. Il problema è che quando il modulo viene inviato, i campi della password rimangono riempiti. Voglio che cancellino. Ho provato javascript ma quando utilizzo document.preferences.submit (), l'invio non viene attivato o l'azione non viene attivata o entrambi. Ecco il codice:
<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>
<% } %>
Soluzione
- Per eseguire il debug di problemi JavaScript, pubblicare meglio l'HTML generato
- Per eseguire il debug di problemi JavaScript più facilmente, utilizzare il browser Firefox con l'estensione Firebug.
Modifica: stai tentando di cancellare la password dopo l'invio della pagina. Dopo che la pagina di invio passa a un'altra pagina, quindi penso che JavaScript non influirà su alcun elemento DOM successivamente.
Puoi provare la seguente sequenza.
- Memorizza nome utente e password su variabili JavaScript.
- cancella i valori di nome utente e password.
- Pubblica sulla pagina con i valori memorizzati.
Altri suggerimenti
Potrebbe essere il tuo browser che compila il campo della password se lo hai impostato per ricordare le tue password. Ho avuto questo accadere a me.