错误的内部 HTML 在错误的地方
error inner HTML on the wrong place
我对 3 个必填输入字段进行了表单验证:姓名、地址和城市。我做了这个JavaScript:
function Validate(form) {
var error_name = "";
var error_address = "";
var error_city = "";
if (form.name.value.length == 0) {
form.name.style.border = "1px solid red"; /*optioneel */
form.name.style.backgroundColor = "#FFCCCC"; /* optioneel */
error_name = "Name cannot be left blank!";
}
if (form.address.value.length == 0) {
form.address.style.border = "1px solid red"; /*optioneel */
form.address.style.backgroundColor = "#FFCCCC"; /* optioneel */
error_address = "Address cannot be left blank!";
}
if (form.city.value.length == 0) {
form.city.style.border = "1px solid red"; /*optioneel */
form.city.style.backgroundColor = "#FFCCCC"; /* optioneel */
error_city = "City cannot be left blank!";
}
if (error_name.length > 0) {
document.getElementById("error_name").innerHTML = error_name ;
return false;
}
if (error_address.length > 0) {
document.getElementById("error_name").innerHTML = error_address ;
return false;
}
if (error_city.length > 0) {
document.getElementById("error_name").innerHTML = error_city ;
return false;
}
return true;
}
document.getElementById("aanmelden").onsubmit = function () {
return Validate(this);
};
这是形式的一部分:
<div id="form" >
<h3>Aanmelding WIES Congres</h3>
<p class="legend">Deelnemer</p>
<fieldset class="input2" id="Deelnemer">
<label>Naam:</label>
<div id="error_name"></div>
<input type="text" name="name" maxlength="25" size="25">
<label class="right">Bedrijf:</label>
<input class="right" type="text" name="company" maxlength="25" size="25">
<br/>
<label>Adres:</label>
<div id="error_address"></div>
<input type="text" name="address" maxlength="25" size="25"> <br />
<label>Postcode:</label>
<input type="text" name="postalcode" maxlength="6" size="6"> <br />
<label class="right">Plaats:</label>
<div id="error_city"></div>
<input class="right" type="text" name="city" maxlength="25" size="25">
<label>Land</label>
<select name="country">
and so on----
正如您在表单中看到的,名称错误应该发生在名称字段上方,地址错误应该发生在地址字段上方,依此类推。但这并没有发生:所有错误都显示在名称字段上方,无论是名称、地址还是城市错误......我做错了什么?
看起来你所有的错误都针对同一个div : #error_name
.
尝试更改每个以定位相应的div:
document.getElementById("error_name").innerHTML = error_name;
document.getElementById("error_address").innerHTML = error_address;
document.getElementById("error_city").innerHTML = error_city;
此外,某些输入名称与其引用不匹配。例如:
form.name
应为 form.form_name
form.address
应为 form.form_address
form.city
应为 form.form_city
为了一次显示所有错误(而不是每次表单提交一个错误),您需要删除所有return false;
行并在函数末尾放置一个条件返回。此外,在用户更正空白输入后,您需要一种方法来"清除"错误。
这是重组后的函数:
function Validate(form) {
// INITIALIZE VARIABLES
var error_name = "";
var error_address = "";
var error_city = "";
var valid = true;
// CHECK FOR BLANK INPUTS, SET ERROR MESSAGES
if (form.form_name.value.length == 0) {
error_name += "Name cannot be left blank!";
}
if (form.form_address.value.length == 0) {
error_address += "Address cannot be left blank!";
}
if (form.form_city.value.length == 0) {
error_city += "City cannot be left blank!";
}
// UPDATE ERROR MESSAGE DISPLAYS
document.getElementById("error_name").innerHTML = error_name;
document.getElementById("error_address").innerHTML = error_address;
document.getElementById("error_city").innerHTML = error_city;
// IF ERROR MESSAGE EXISTS, CHANGE STYLES AND SET VALID TO FALSE
// ELSE IF NO ERRORS, RESET STYLES
if (error_name.length > 0) {
form.form_name.style.border = "1px solid red";
form.form_name.style.backgroundColor = "#FFCCCC";
valid = false;
} else {
form.form_name.style.border = "none";
form.form_name.style.backgroundColor = "#FFFFFF";
}
if (error_address.length > 0) {
form.form_address.style.border = "1px solid red";
form.form_address.style.backgroundColor = "#FFCCCC";
valid = false;
} else {
form.form_address.style.border = "none";
form.form_address.style.backgroundColor = "#FFFFFF";
}
if (error_city.length > 0) {
form.form_city.style.border = "1px solid red";
form.form_city.style.backgroundColor = "#FFCCCC";
valid = false;
} else {
form.form_city.style.border = "none";
form.form_city.style.backgroundColor = "#FFFFFF";
}
// RETURN FORM VALIDITY (TRUE OR FALSE)
// "FALSE" STOPS THE FORM FROM SUBMITTING
return valid;
}
// CONFIGURE ONSUBMIT FUNCTION
document.getElementById("aanmelden").onsubmit = function () {
return Validate(this);
};
这是一个工作示例(jsfiddle)。
相关文章:
- 生成pdf或其他非html文件时的错误处理
- 如何使用Node/Express显示有关特定错误的自定义html页面
- 回复'js'仅当请求有错误时(否则使用html)
- 我的html有一些错误
- 如何在不创建格式错误的HTML标记的情况下分解字符串
- "未捕获类型错误/丢弃意外“;因为一句台词而出现?(HTML w/<脚本>)
- 使用.format在一些HTML代码中插入文本,会出现错误(Python)
- HTML选择,在DOM中选择了正确的选项,但在firefox中显示了错误的项目
- Html抓取网站加载错误的J汤Java
- HTML上的Webpack JSX错误<来源>标签
- 未捕获的错误: [$injector:modulerr] http ..(使用纯 HTML)
- 为什么我的 JavaScript 会导致 HTML 验证错误
- ng-bind-html 工作,但抛出错误
- Javascript 将 HTML 写入页面错误
- HTML 无法识别我要求它运行的 javascript 文件,语法错误:意外的令牌“<”(匿名函数)script.js:
- 带有 CommonsChunkPlugin 的 Webpack 会导致 html 文件中的捆绑顺序错误
- JavaScript/HTML 错误的解决方案
- 如何检查 HTML 标记,然后在 jQuery 验证中添加错误
- 当输入值已更改时,html() 方法错误
- Wordpress/PHP/JQuery验证错误?HTML 5验证失败