[英]How to hide/remove a error message after showing it to user after few second in javascript
我正在编写一个脚本来验证用户名。 我可以检查用户名。 如果用户名不符合条件,则抛出错误。
<script>
//<![CDATA[
function visitPage() {
if (validateUsername()) {
var div = document.getElementById("totalpricecheck");
var spans = div.getElementsByTagName("span");
var totalprice = spans[3].innerHTML;
var name = document.getElementById("name").value;
alert(name);
}
}
function validateUsername(fld) {
var fld = document.getElementById("name").value;
var error = "";
var illegalChars = /\W/; // allow letters, numbers, and underscores
if (fld.value == "") {
//fld.style.background = 'Yellow';
error = "You didn't enter a username.\n";
document.getElementById("nmessage").innerHTML = "You didn't enter a username.\n";
// $("#nmessage").fadeOut(3000);
// alert(error);
return false;
} else if ((fld.length < 5) || (fld.length > 50)) {
//fld.style.background = 'Yellow';
error = "The username is the wrong length.\n";
document.getElementById("nmessage").innerHTML = "OOps!! The username is too short \n";
// alert(error);
return false;
} else if (illegalChars.test(fld.value)) {
//fld.style.background = 'Yellow';
document.getElementById("nmessage").innerHTML = "The username contains Unsupported characters.\n";
error = "The username contains Unsupported characters.\n";
// alert(error);
return false;
} else {
// fld.style.background = 'White';
}
return true;
}
return false;
}
// ]]>
</script>
我试图使用淡入淡出效果隐藏此错误,如几秒钟后在“ 隐藏div”中给出的
setTimeout(function() {
$('#mydiv').fadeOut('fast');
}, 1000); // <-- time in milliseconds
但没有得到如何在JavaScript中使用jQuery方法删除错误消息。 有人建议我要达到预期效果,有什么可能的选择。
根据您的代码判断:
document.getElementById("nmessage").innerHTML ="The username contains Unsupported characters.\n";
您的setTimeout函数未调用正确的div隐藏。 它看起来应该像这样:
setTimeout(function() {
$('#nmessage').fadeOut('fast');
}, 1000); // <-- time in milliseconds
我也完全没有在脚本中实现此功能,因此在更改innerHTML之后添加setTimeout函数调用。
要从CDN包含jQuery,请使用以下代码。 将其粘贴到head
标签中
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
您应该在visitPage()中设置计时器
function visitPage() {
if(validateUsername()) {
var div = document.getElementById("totalpricecheck");
var spans=div.getElementsByTagName("span");
var totalprice=spans[3].innerHTML;
var name = document.getElementById("name").value;
alert(name);
}
else {
// show error message
$('#nmessage').show();
// hide error message after 3 sec
setTimeout(function() {
$('#nmessage').fadeOut('fast');
}, 3000);
}
}
更新资料
我看到您仅使用jQuery来隐藏和显示div。 如果不需要fadOut动画效果,则可以删除jQuery库并使用以下代码。
function visitPage() {
if(validateUsername()) {
var div = document.getElementById("totalpricecheck");
var spans=div.getElementsByTagName("span");
var totalprice=spans[3].innerHTML;
var name = document.getElementById("name").value;
alert(name);
}
else {
// show error message
document.getElementById("nmessage").style.display = 'block';
// hide error message after 3 sec
setTimeout(function() {
document.getElementById("nmessage").style.display = 'none';
}, 3000);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.