如何使输入类型标记的必需属性仅适用于特定按钮


how to make required attribute of input type tag work only for specific buttons?

我在 html 中制作了一个表单,其中包含 2 个输入字段first namelast name,并将 required 属性添加到输入类型标签中。我还制作了两个按钮SubmitView。如果两个字段都为空,则显示please fill out this field attribute消息。当我单击提交按钮时,我的表单中的数据使用 php 进入我的 sql 数据库,这很好。但是当我单击查看按钮时,我只想显示一条消息而不填充first namelast name文本区域。如何使用视图按钮执行此操作?

tl;dr:我希望输入类型标签的"必需"属性仅适用于提交按钮,而不适用于查看按钮。我应该怎么做?我使用HTML作为表单,CSS用于样式,PHP用于sql条目。谢谢。

你可以用JavaScript做类似的事情,例如,通过给你的每个输入一个ID,然后你可以检测何时点击视图按钮并删除"必需"属性。

下面是一个 JQuery 示例:

<html>
<head>
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script>
$( document ).ready(function() {
    $("#view").click(function() {
        $("#test1").removeAttr("required");
        $("#test2").removeAttr("required");
    });
});
</script>
</head>
<body>
  <form action="example.php" method="POST">
  First name:<br />
  <input type="text" name="firstname" id="test1" required="required"><br />
  Last name:<br />
  <input type="text" name="lastname" id="test2" required="required"><br />
  <input type="submit" value="Submit"> | <input type="submit" id="view" value="View">
</form> 
</body>
</html>

JSFiddle

您还可以阻止点击事件的默认操作。在本例中,代码将如下所示:

$(document).ready(function() {
  $("#view").click(function() {
    return false;
  }); 
});

或使用 preventDefault:

$(document).ready(function() {
  $("#view").click(function(e) {
    e.preventDefault();
  }); 
});

两者似乎都可以正常工作。 #view(如上述答案所示)是要阻止触发必需属性的按钮的 id。