Javascript 错误或成功提交表单时的警报消息
所以我在这个表单上尝试应用简单的表单验证,一切都正常,除了如果用户离开空字段或表单已成功提交,我想显示一条警告消息。 但问题是我的表格下面有一条紫色的线,我想在提交表格之前隐藏它Javascript 错误或成功提交表单时的警报消息,javascript,jquery,html,css,forms,Javascript,Jquery,Html,Css,Forms,所以我在这个表单上尝试应用简单的表单验证,一切都正常,除了如果用户离开空字段或表单已成功提交,我想显示一条警告消息。 但问题是我的表格下面有一条紫色的线,我想在提交表格之前隐藏它 /*简单表单验证脚本*/ var formData=document.forms.myForm; var show=document.getElementById(“警报”); formData.onsubmit=函数(){ 如果(formData.name.value==“”){ show.innerHTML=“请
/*简单表单验证脚本*/
var formData=document.forms.myForm;
var show=document.getElementById(“警报”);
formData.onsubmit=函数(){
如果(formData.name.value==“”){
show.innerHTML=“请填写所有字段!”;
返回false;
}否则{
$(“#警报”).css(“显示”、“块”);
show.innerHTML=“成功提交表单!”;
返回true;
}
};代码>
#警报{
保证金:30像素自动;
背景:紫色;
颜色:#fff;
边框:1px实心透明;
填充:0px 20px;
宽度:30%;
字体大小:20px;
边界半径:2px;
-webkit过渡:背景2轻松;
-moz转换:背景2秒;
-ms转换:背景2s;
-o-过渡:背景;
过渡:背景轻松;
}
姓名:
密码:
此代码的问题是,您通常提交的是,,这意味着页面被导航到另一个页面,您可以在那里看到帖子结果。在这里,新页面被加载,所有旧JavaScript被丢弃
要使用CSS显示#警报
,您需要在同一页面中,因此使用AJAX是最好的方法。这就是为什么当它导航到新页面时,甚至在JavaScript执行之前,您都看不到输出
此外,在顶部添加以下代码将有助于在显示警报框之前隐藏警报框(现在显示为细线):
$("#alert").hide();
注意:为什么要混淆jQuery和JavaScript。使用一个,它更容易
更新:隐藏紫色细线代码:
/*简单表单验证脚本*/
$(函数(){
$(“#警报”).hide();
$(“表格”)。提交(函数(){
如果(this.name.value==“”){
$(“#警报”).text(“请填写所有字段!”).show();
}否则{
$(“#警报”).text(“成功提交表单!”).show();
$.post($(this.attr(“操作”),$(this.serialize(),函数(){
$(“#警报”).text(“成功提交表单!”).show();
});
}
返回false;
});
});代码>
#警报{
保证金:30像素自动;
背景:紫色;
颜色:#fff;
边框:1px实心透明;
填充:0px 20px;
宽度:30%;
字体大小:20px;
边界半径:2px;
-webkit过渡:背景2轻松;
-moz转换:背景2秒;
-ms转换:背景2s;
-o-过渡:背景;
过渡:背景轻松;
}
姓名:
密码:
将#警报设置为显示:无;默认情况下
#alert {
display:none;
}
JS:
您可以尝试使用js中的.css属性指定边框,如下所示:
$("#alert").css('border','1px solid transparent');
您可以尝试下面的代码。我已经测试过了,它正在工作。
#警觉的{
保证金:30像素自动;
背景:紫色;
颜色:#fff;
填充:0px 20px;
宽度:30%;
字体大小:20px;
边界半径:2px;
-webkit过渡:背景2轻松;
-moz转换:背景2秒;
-ms转换:背景2s;
-o-过渡:背景;
过渡:背景轻松;
}
姓名:
密码:
/*简单表单验证脚本*/
$(函数(){
$(“#警报”).hide();
$(“表格”)。提交(函数(){
如果(this.name.value==“”){
$(“#警报”).text(“请填写所有字段!”).show();
}否则{
$(“#警报”).text(“成功提交表单!”).show();
$.post($(this.attr(“操作”),$(this.serialize(),函数(){
$(“#警报”).text(“成功提交表单!”).show();
});
}
返回false;
});
});
$(“#警报”).css('border','1px solid transparent');
为什么要将jQuery和JavaScript混为一谈。使用一个,更简单。将#alert
设置为显示:无
by defaultsubmitting表单重新加载页面。据我所知,当表单首次加载时,您希望隐藏警报div…因此您必须将其显示属性default设置为hide(display:none),这应该可以解决问题…在验证中,在这两种情况下都显示它..在您的情况下,您可以使用preventDefault()为了避免默认的表单提交行为,当您在表单提交成功时将表单提交给自己,它会导致表单重新加载,结果是您没有收到成功消息。是的,感谢您的澄清,但我想在显示之前隐藏紫色细线@PraveenKumar@AishaSalman是的,您需要使用$(“#警报”).hide()代码>在顶部。是的,我已将其设置为顶部,但在这里不起作用@PraveenKumar@AishaSalman我首先解释了使用AJAX代码的原因。@AishaSalman您需要使用AJAX来显示消息buddy。那么,您需要显示AJAX的代码吗?
Try removing border attribute from this code:
#alert {
margin: 30px auto;
background: purple;
color: #fff;
border: 1px solid transparent;
padding: 0px 20px;
width: 30%;
font-size: 20px;
border-radius: 2px;
-webkit-transition: background 2s ease;
-moz-transition: background 2s ease;
-ms-transition: background 2s ease;
-o-transition: background 2s ease;
transition: background 2s ease;
}
$("#alert").css('border','1px solid transparent');