Javascript php脚本无法使用锚标记验证数据
我有一个登录表单,我知道如何使用submit按钮从数据库提交数据以进行验证,但我想使用anchor标记提交数据,并且必须使用php进行验证,我所做的如下操作不起作用: index.php login_process.phpJavascript php脚本无法使用锚标记验证数据,javascript,php,html,Javascript,Php,Html,我有一个登录表单,我知道如何使用submit按钮从数据库提交数据以进行验证,但我想使用anchor标记提交数据,并且必须使用php进行验证,我所做的如下操作不起作用: index.php login_process.php 我知道您希望使用锚来提交表单,而不是使用按钮。有几种解决方案可以解决这个问题,但我要告诉您,使用锚来提交表单需要使用JavaScript来连接事件。这是不安全的,因为如果用户禁用了JavaScript,您将无法提交表单。最好让提交按钮看起来像锚,如下所示: <input
我知道您希望使用锚来提交表单,而不是使用按钮。有几种解决方案可以解决这个问题,但我要告诉您,使用锚来提交表单需要使用JavaScript来连接事件。这是不安全的,因为如果用户禁用了JavaScript,您将无法提交表单。最好让提交按钮看起来像锚,如下所示:
<input type="submit" class="submitAnchor" value="Submit">
现在,如果您确实坚持使用锚,您可以:
1.事件转发,当锚定事件点击被激活时,激活“提交事件点击”按钮:
<form name="form_lg" action="login_process.php" method="post" class="sign-form">
...
<input type="submit" name="submit" value="Go" class="submit">
<a href="#" onclick="form_lg['submit'].click()" class="btn btn_red">
Register
</a>
在这种情况下,您应该在login_process.php文件中更改这一行。而不是:
if(isset($_POST['submit'])){
这样做:
if($_POST['action']=='submit') {
希望对你有帮助 问题在于控件的名称。 在窗体中具有名为submit的控件将覆盖form.submit 浏览器控制台中的错误是.submit不是一个函数 所以,请用其他东西更改submit按钮的名称,它就可以正常工作了
<form class="sign-form" action="login_process.php" method="post" id="lg" name="form">
<fieldset>
<div class="row">
<span class="text">
<input type="email" name="email"/>
</span>
<span class="text">
<input type="password" name="pwd"/>
</span>
<input type="submit" value="Go" name="submit" class="submit" id="btnSubmit" />
</div>
<div class="row">
<label for="check-1">Remember me</label>
<input type="checkbox" class="check" id="check-1" />
<a href="chngpwd.html">Forgot your password?</a>
<?php
if(isset($_GET['loginFailed']) && !empty($_GET['loginFailed'])) {
$msg=$_GET['loginFailed'];
echo $msg;
}
?>
</div>
</fieldset>
<div class="action_btns">
<div class="one_half">
<a href="#" class="btn back_btn"><i class="fa fa-angle-double-left"></i> Back</a>
</div>
<div class="one_half last">
<a href="#" onclick="document.getElementById('btnSubmit').click()" class="btn btn_red" name="submit">Register</a>
</div>
</div>
</form>
试试吧,因为你的表格是lg,而不是lgss。哦!!这不是一个问题,只是因为按ctrl+s多次不确定是否是打字错误。你错过了after onclick=document.getElementById'lgss。提交不是问题,这是发布时的错误。你能更新你的问题,使其看起来像什么吗?用拼写错误发布代码是不好的。是的,现在它在login_process.php页面上跳转,但它不满足“ifisset$\u POST['submit']”这个条件,而且我仍然得到一个空白页面,而不是我的登录成功。phpI已经告诉过你,你没有得到任何$\u POST['submit'],因为你没有按任何按钮。检查其他变量,或者您必须按下按钮,因为submit不仅仅是一个输入名称。所以,只需使用其他检查来更改条件,比如isset$\u POST['email']或write var\u dump$\u POST;我删除了submit按钮,然后命名为anchor tag submit,当我点击anchor时,我跳转到login_process.php,但这是balnkNo,anchor tag不是输入。如果你想不惜任何代价在你的php中拥有$_POST[submit],请查看我的更新答案是的,现在它在login\u process.php页面上跳转,但它不满足“ifasset$_POST['submit']”这一条件,而且我得到的仍然是一个空白页面,而不是我的login\u success。phpI用另一个解决方案更新我的答案更容易。但是如果你坚持第一种解决方案,请告诉我,我会给你一个窍门。现在你使用输入类型,我想提交,而不使用输入类型,我想使用锚定标记提交。请在更新的答案中查看原因。我也给你两个技巧,你可以用在你想使用锚的情况下。如果你在某个步骤中遇到困难,或者你需要了解一些事情,请告诉我。
<form name="form_lg" action="login_process.php" method="post" class="sign-form">
...
<input type="hidden" name="action" value="" />
<a href="javascript:form_lg.submit()" onclick="form_lg['action'].value='submit'"
class="btn btn_red">Register</a>
if(isset($_POST['submit'])){
if($_POST['action']=='submit') {
<form class="sign-form" action="login_process.php" method="post" id="lg" name="form">
<fieldset>
<div class="row">
<span class="text">
<input type="email" name="email"/>
</span>
<span class="text">
<input type="password" name="pwd"/>
</span>
<input type="submit" value="Go" name="submit" class="submit" id="btnSubmit" />
</div>
<div class="row">
<label for="check-1">Remember me</label>
<input type="checkbox" class="check" id="check-1" />
<a href="chngpwd.html">Forgot your password?</a>
<?php
if(isset($_GET['loginFailed']) && !empty($_GET['loginFailed'])) {
$msg=$_GET['loginFailed'];
echo $msg;
}
?>
</div>
</fieldset>
<div class="action_btns">
<div class="one_half">
<a href="#" class="btn back_btn"><i class="fa fa-angle-double-left"></i> Back</a>
</div>
<div class="one_half last">
<a href="#" onclick="document.getElementById('btnSubmit').click()" class="btn btn_red" name="submit">Register</a>
</div>
</div>
</form>