按钮(提交)不起作用 - 但输入(提交)工作

时间:2016-05-16 10:35:03

标签: php html html5

我想用PHP制作登录页面。

想要使用按钮,但它不起作用 它看起来只是刷新页面。

我在表单中尝试了按钮标记 我怎样才能使这个有效?

<?php
  include "login.php";
?>

<form method="post" id="sign">

  <div class="mdl-textfield mdl-js-textfield">
    <input class="mdl-textfield__input" type="email" name="user_mail" id="user_mail" value="<?php echo addslashes($_POST['user_mail'] ?? '') ?>">
    <label class="mdl-textfield__label" for="user_mail">Email</label>
  </div>

  <div class="mdl-textfield mdl-js-textfield">
    <input class="mdl-textfield__input" type="password" name="passcode" id="passcode" value="<?php echo addslashes($_POST['passcode'] ?? '') ?>">
    <label class="mdl-textfield__label" for="passcode">Password</label>
  </div>
</form>

//this <input> works
<input type="submit" name="signup" form="sign"/>
//I want to use this <button>
<button type="submit" name"signup" form "sign" formmethod="post"></button>

<?php
  if ($error ?? '') {

    echo addslashes($error);

  }

的login.php

if ($_POST['signup'] ?? '') {

  $error = '';

  if (!$_POST['user_mail']) $error .= "<br />Please enter email";
  else if (!filter_var($_POST['user_mail'], FILTER_VALIDATE_EMAIL)) $error .= "<br />Please enter valid email";

  if (!$_POST['passcode']) $error .= "<br />Please enter password";
  else {

    if (strlen($_POST['passcode']) < 8) $error .= "<br />Please enter a password more than eight";
    if (!preg_match('`[A-Z]`', $_POST['passcode'])) $error .= "<br />please least one capital letter";

  }

  if ($error) $error = "there were errors:" . $error;

4 个答案:

答案 0 :(得分:0)

<button>表示在页面上放置一个按钮并执行onclick方法中的任何内容。 <submit>提交表单。

如果您想要一个按钮来汇总表单,请使用按钮的onclick方法进行操作。你为什么不能使用提交?

点击此处,他们使用了<a onclick='...'链接,但您可以为按钮执行相同操作:How to submit a form with JavaScript by clicking a link?

正如@Arun在下面所说,你可以使用:

您的表单中也有

<button type='submit'>。有很多方法可以做,所以我唯一的建议是保持一致。我习惯使用input,这样我的代码中就没有一堆混合约定。

答案 1 :(得分:0)

如果您想在按钮上单击提交表单,请使用jquery添加按钮的单击事件并提交如下表单:

HTML:

<button type="submit" name"signup" id="btn_submit" value="submit" >Submit</button>

Jquery的:

$("#btn_submit").click(function() {
    $("#sign").submit(); // submit a form
});

答案 2 :(得分:0)

我认为您需要对表单元素执行操作:

<form method="post" id="sign" action="login.php">

我不懂PHP,所以我可能错了。

答案 3 :(得分:0)

您需要进行2次更改:

  1. 添加action属性
  2. 在表单中移动button元素。您无法期望页面上的任何按钮都能提交您的表单。它必须位于与之关联的表单内。
  3. <form method="post" id="sign" action="form-destination.php">
    
    <div class="mdl-textfield mdl-js-textfield">
        <input class="mdl-textfield__input" type="email" name="user_mail" id="user_mail" value="<?php echo addslashes($_POST['user_mail'] ?? '') ?>">
        <label class="mdl-textfield__label" for="user_mail">Email</label>
      </div>
    
      <div class="mdl-textfield mdl-js-textfield">
        <input class="mdl-textfield__input" type="password" name="passcode" id="passcode" value="<?php echo addslashes($_POST['passcode'] ?? '') ?>">
        <label class="mdl-textfield__label" for="passcode">Password</label>
      </div>
      <button type="submit" name"signup" form "sign" formmethod="post"></button>
    </form>
    
    
    
    <?php
      if ($error ?? '') {
    
        echo addslashes($error);
    
      }
    ?>