Javascript验证-错误消息只闪烁一秒钟
Javascript validation - Error message only flashes for a second
我有这个简单的HTML项目,它验证一个空文本和单选按钮字段。如果其中一个字段为空,则显示错误,但错误消息仅在屏幕上闪烁一秒钟,然后再次消失。为什么会发生这种情况?
这是我的HTML代码
<form id="food_form">
<p>
<label>Your Name:
<input type="text" id="user_name" name="user_name">
</label>
<span id="error_user_name" class="error"></span>
</p>
<p>
Favorite Food?
<span id="error_radiobutton" class="error"></span><br>
<label><input type="radio" name="radiobutton" value="pizza">Pizza</label><br>
<label><input type="radio" name="radiobutton" value="burger">Burger</label><br>
<label><input type="radio" name="radiobutton" value="spaghetti">Spaghetti</label><br>
</p>
<input type="submit" value="Submit">
然后是Javascript代码
<script>
document.getElementById("food_form").onsubmit = validateForm;
function validateForm() {
var validName = validateTextBox("user_name", "error_user_name"),
validRadiobutton = validateRadioButton();
}
function validateTextBox(fieldId, errorId) {
var text = document.getElementById(fieldId).value,
errorSpan = document.getElementById(errorId);
if (text === "") {
errorSpan.innerHTML = "* please input your name";
}
}
function validateRadioButton() {
var radiobutton = document.getElementById("food_form").radiobutton,
errorSpan = document.getElementById("error_radiobutton"),
isChecked = false,
i;
errorSpan.innerHTML = "";
for (i = 0; i < radiobutton.length; i++) {
if (radiobutton[i].checked) {
isChecked = true;
break;
}
}
if (!isChecked) {
errorSpan.innerHTML = "* You must pick something.";
}
}
感谢您的回复。
您的函数validateForm
设置错误消息,但随后您调用validateRadioButton()
,再次设置errorSpan.innerHTML = "";
。这就是"flash"
您正在验证表单,但是如果在submit
事件上验证失败,则需要执行return false
。试试这个
function validateForm() {
var isTextBoxValid = validateTextBox("user_name", "error_user_name"),
isRadioButtonValid = validateRadioButton();
return isTextBoxValid || isRadioButtonValid;
}
function validateTextBox(fieldId, errorId) {
var text = document.getElementById(fieldId).value,
errorSpan = document.getElementById(errorId),
isValid = true;
if (text === "") {
errorSpan.innerHTML = "* please input your name";
isValid = false;
}
return isValid;
}
function validateRadioButton() {
var radiobutton = document.getElementById("food_form").radiobutton,
errorSpan = document.getElementById("error_radiobutton"),
isChecked = false, i,
errorSpan.innerHTML = "";
for (i = 0; i < radiobutton.length; i++) {
if (radiobutton[i].checked) {
isChecked = true;
break;
}
}
if (!isChecked) {
errorSpan.innerHTML = "* You must pick something.";
}
return isChecked;
}
在上面的代码中,我们为每个函数返回Boolean
值(true
/false
),如果其中一个是true
,我们就提交表单
尝试将提交按钮放在表单元素的外部。
我一直有同样的问题,这只是为我工作。
相关文章:
- JavaScript sweetAlert弹出窗口在一秒钟后自动关闭
- ng show和ng hide don'I don’我一秒钟都不工作
- 出现一秒钟然后显示为Javascript的消息
- Javascript单选按钮验证错误弹出不到一秒钟,但不应消失
- 如何使用javascript在一秒钟内做60次的事情
- 如何在函数执行前等待一秒钟
- 表单提交仅运行Javascript函数一秒钟
- Javascript:选择页面上的所有复选框.它会检查所有内容一秒钟,然后消失
- 下拉菜单不会显示超过一秒钟.不起作用
- 循环后暂停 css 精灵一秒钟
- .animate();在Javascript中是冻结一秒钟
- 如何在 jQuery 中阻止 keyup() 事件一秒钟
- 每五次迭代后暂停循环一秒钟
- 视频在更改源时闪烁一次
- 文件ElementID('id').innerHTML=只闪烁一次,然后它'他走了
- 计算一秒钟内鼠标点击的次数
- 让一个html元素闪烁一种背景色,然后渐变为另一种
- 流星助手添加适当的css一秒钟,然后消失
- Javascript验证-错误消息只闪烁一秒钟
- Javascript会闪烁一秒钟,但不会在文本框中打印