javascript - onclick 还会重定向到“表单操作”
问题描述
我有一个用于密码的小字段,旁边有一个按钮。如果您单击该按钮,它会显示您的密码,如果您再次单击它,它将隐藏它。这一切都很好,但在它显示您的密码后,它会立即执行我为表单设置的操作。关于如何解决这个问题的任何想法?
<form action='bod.php' method='post'>
<table>
<tr>
<td class='col-2'>
<input type='text' name='Email' id='Email' placeholder='E-mail' class='input-effect form__input' value='$Email'>
</td>
<td class='col-2'>
<input type='password' name='Wachtwoord' id='Wachtwoord' placeholder='Wachtwoord' class='input-effect form__input' value='$Wachtwoord'>
</td>
<td>
<input type='image' src='img/eye.png' onClick='showPswd()' class='show'>
</td>
</tr>
<tr>
<td class='col-2'>
<input type='text' name='Bod' id='Bod' placeholder='Bod' class='input-effect form__input' onchange='controleerBod()'>
</td>
<td class='col-2'>
<button type='submit' id='Bied'>Bied</button>
</td>
</tr>
</table>
</form>
// This is my JavaScript (it works)
// Show password
function showPswd() {
var x = document.getElementById("Wachtwoord");
if (x.type === "password") {
x.type = "text";
} else {
x.type = "password";
}
}
因此,如果您单击图像“eye.png”,它将显示您的密码,如果您再次单击它,它将隐藏它。现在它会显示您的密码并立即重新连接到“bod.php”(表单操作)。
解决方案
您需要使用preventDefault()函数。而且您还需要在函数中传递事件参数
<input type='image' src='img/eye.png' onClick='showPswd(event)' class='show'>
这应该是你的 JS 代码
function showPswd(evt) {
evt.preventDefault();
var x = document.getElementById("Wachtwoord");
if (x.type === "password") {
x.type = "text";
} else {
x.type = "password";
}
}
推荐阅读
- image-processing - 一个通道的separate_stains输出并转换为灰度
- javascript - 为什么数组显示为字符串,但是当我将其打印到控制台时,它会将其打印为数组?ReactJS 功能组件
- python - 为 python 3.8.2 导入 numpy
- python - 使用 astype 从 object 转换为 int 后,值计数发生了变化?
- javascript - Vue momentjs 从时间戳实时更新相对时间
- python - 对另一个 DataFrame 中按列分组的 DataFrame 行值求和
- java - 正则表达式来验证字符串的格式是否正确
- c# - 如何防止字符串在内存中被读取?(C#)
- php - 如何通过 php 中的会话从用户的用户名中获取用户的用户 ID?
- java - Stack Pane:添加 Canvas 和 Imageview 不会导致两者被堆叠