Javascript 即使表单为空,Onclick警报也可以工作?单击“提交”按钮后,警报显示为1,然后显示输入字段为必填字段
这是我的密码。现在发生的事情是,当我用1个输入填写特定表单时,数据会被提交,之后会显示警报,但如果我没有在表单中填写任何内容,只需单击“提交”按钮,即使表单为空,也会显示警报,警报后会显示请填写此字段。。那么出了什么问题?尝试寻找这个解决方案,尝试了很多东西,但都没有效果…:(Javascript 即使表单为空,Onclick警报也可以工作?单击“提交”按钮后,警报显示为1,然后显示输入字段为必填字段,javascript,php,mysqli,onclick,form-submit,Javascript,Php,Mysqli,Onclick,Form Submit,这是我的密码。现在发生的事情是,当我用1个输入填写特定表单时,数据会被提交,之后会显示警报,但如果我没有在表单中填写任何内容,只需单击“提交”按钮,即使表单为空,也会显示警报,警报后会显示请填写此字段。。那么出了什么问题?尝试寻找这个解决方案,尝试了很多东西,但都没有效果…:( 注册时事通讯 订阅 函数submit_email(){alert(“您已订阅我们的新闻稿!”);} 无论发生什么情况,警报代码都会执行。因此,只有当表单中没有任何内容时,才必须显示警报代码。 为此,我在您的输入中添加了
注册时事通讯
订阅
函数submit_email(){alert(“您已订阅我们的新闻稿!”);}
无论发生什么情况,警报代码都会执行。因此,只有当表单中没有任何内容时,才必须显示警报代码。
为此,我在您的输入中添加了一个id,并检查您的表单是否为空。
最好是向regex检查它是否确实是一个电子邮件地址,但这里的代码只是为了验证它是否不是空的
代码如下:
<div class="newsletter">
<p>Sign Up for the <strong>NEWSLETTER</strong></p>
<form method="post">
<?php
if(isset($_POST['subscribe']))
{
$e_mail = $_POST['e_mail'];
$conn = new mysqli('localhost','root','','purrfect_whiskers');
if($conn->connect_error)
{
echo "$conn->connect_error";
die("Connection Failed : ". $conn->connect_error);
}
else
{
$stmt = $conn->prepare("insert into newsletter(e_mail) values(?)");
$stmt->bind_param("s", $e_mail);
$stmt->execute();
$stmt->close();
$conn->close();
}
}
?>
<input id="id_input" class="input" type="email" name="e_mail" text-transform="lowercase"
placeholder="Enter Your Email"
autocomplete="off" required="required">
<button class="subscribe" onclick="submit_email()" type="submit" name="subscribe"><i class="fa fa-envelope"></i>
Subscribe
</button>
<script type="text/javascript">function submit_email() {
if (document.getElementById("id_input").value !== "") {
alert("You've been subscribed to our newsletter!");
}
}</script>
</form>
</div>
注册时事通讯
订阅
函数submit_email(){
if(document.getElementById(“id_输入”).value!=“”){
提醒(“您已订阅我们的时事通讯!”);
}
}
看起来您应该验证用户在允许提交之前是否为电子邮件输入了值。如果没有,则显示错误。如果有,则允许提交,并在页面刷新时显示成功警报
有两种方法可以防止自动提交表单,其中之一是将onsubmit
处理程序放在表单
标记中,并使其返回true
(允许提交或false
防止提交。您可以在该处理程序中执行所有验证操作:
<form method="POST" onsubmit="return submit_email()">
然后在函数中,检查值是否存在,然后再继续:
<script type="text/javascript">
function submit_email(){
let email_input = document.querySelector("input[name='e_mail']");
if (email_input.value=="") {
alert("Please type in your email first");
return false; // this prevents the form from submitting
}
return true; // this allows the submission
}
</script>
函数submit_email(){
让email\u input=document.querySelector(“input[name='e\u mail']”);
如果(email_input.value==“”){
提醒(“请先键入电子邮件”);
return false;//这将阻止表单提交
}
return true;//这允许提交
}
表单将提交,页面将刷新,您的PHP代码将完成它的工作。最后,只需硬编码您的警报,如下所示:
<?php
if(isset($_POST['subscribe'])){
// do all your code as you are, then end with:
?>
<script>
alert("You've been subscribed to our newsletter!");
</script>
<?php
}
?>
提醒(“您已订阅我们的时事通讯!”);
我不会使用onclick
事件处理程序来显示该警报。只要有人单击按钮,onclick
就会触发。那是在表单提交到服务器之前,所以在显示该警报时,用户还没有实际订阅。我会在页面中添加一条消息,感谢他们如果(isset($\u POST['subscribe'])分支。并使用else显示表单,这样他们就不能再次输入表单。或者重定向到另一个“谢谢”页面,这样即使刷新页面也不会再次提交您的数据。是的,我删除了onclick函数并添加了onsubmit,而不是…如果您使用内置的required
validation约束,您根本不需要该函数。@lvar-很好。虽然这里需要对表单事件的提交周期进行演练-在允许提交之前,可能需要检查该电子邮件地址是否已经存在。。。
<?php
if(isset($_POST['subscribe'])){
// do all your code as you are, then end with:
?>
<script>
alert("You've been subscribed to our newsletter!");
</script>
<?php
}
?>