JavaScript 表单验证 - 这段代码有什么问题
JavaScript Form Validation - What is wrong with this code?
我只是在输入字段中添加文本以进行练习。似乎当我按提交时,文本会在输入字段中出现一小秒钟,然后消失。有人可以告诉我为什么会这样吗?我怎样才能让消息留下来?
<!DOCTYPE html>
<html>
<head>
<title>Title</title>
<script src="EventUtil.js"></script>
</head>
<body>
<form>
<input type="text" name="poop1"> <br>
<input type="text" name="poop1"> <br>
<input type="text" name="poop1"> <br>
<input type="text" name="poop1"> <br>
<input type="submit" value="submit" id="btn">
</form>
<script type="text/javascript">
EventUtil.addHandler(window,"load", function() {
var btn = document.getElementById("btn");
EventUtil.addHandler(btn,"click",function(){
var i;
for (i=0; i<document.forms[0].elements.length-1; i++){
if (document.forms[0].elements[i].value == ""){
document.forms[0].elements[i].value = "fill this poop in";
}
}
})
})
</script>
</body>
</html>
问题是您正在提交表单,这会重新加载当前页面。这就是为什么你只看到片刻的值。
要修复它,请使用 <button type="button">
而不是 <input type="submit">
。
您应该将侦听器放在表单的提交处理程序上,而不是提交按钮上,因为无需单击该按钮即可提交表单。向表单添加 ID,或使用文档的表单集合:
var form = document.forms[0];
或
var form = document.getElementById('formID');
如其他答案中所述,表单正在提交,因此页面会刷新。要取消提交,请从侦听器返回 false。
在侦听器中,这应该引用以下形式:
EventUtil.addHandler(form, 'submit', function(){
var control, controls = this.elements;
for (var i=0, iLen=controls.length; i<iLen; i++) {
control = controls[i];
if (control.type == 'input' && control.type == 'text' && control.value == '') {
control.value = 'fill this shit in';
return false;
}
}
});
为什么不在表单元素上使用必需的属性
相关文章:
- 有什么工具可以轻松读取javascript代码吗
- 我不知道为什么我的代码是错误的?又有什么错
- 这个代码在网页中的作用和要求是什么
- 什么'这个javascript代码getElementById有问题
- 问号在这段代码中是什么意思
- 什么'这是谷歌分析跟踪代码使用的技术
- 我不知道此代码中的这些符号是什么意思.十进制到二进制
- 此nodeValue替换代码有什么问题
- 什么正在取代我的'以及“;javascript代码中使用&#39;和&”;
- 使用较少代码隐藏和显示选择菜单内容的更好方法是什么?javascript
- 我的CSS/Javascript下拉菜单测试代码出了什么问题
- 这个代码出了什么问题?(Jquery)
- 什么'这个javascript代码有错吗?(已关闭)
- 控制台中的“function floor(){[本机代码]}”是什么
- 在 Javascript 中实现解耦代码/回调的正确方法是什么?
- 这个代码是什么意思(history.replaceState和history.pushstate)
- 什么'这是一个神奇的javascript代码,用于以及如何创建它
- 这段代码的含义是什么<%=一些可变的%>
- 有人能解释一下evaluate()和dragAndDrop()在下面的角度测试代码中调用了什么吗
- 为什么这个 JQuery 代码什么都不返回