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

时间:2016-04-27 19:57:34

标签: php html forms

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

tl;博士:我想要'必要'输入类型标记的属性仅适用于提交按钮而不适用于视图按钮。我该怎么办?我使用HTML作为表单,CSS用于样式,PHP用于sql条目。感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用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

答案 1 :(得分:1)

您还可以阻止点击事件的默认操作。在这种情况下,代码如下所示:

#include<iostream>
#include<fstream>
#include<cstring>
#include<string>
#include<math.h>

using namespace std;

struct Player 
 {
  int playerID;
  string name;
  };

Player *fillPlayers();

int main() 
{
 Player *myPlayerPointer;
 myPlayerPointer = fillPlayers();
 return 0;
}

Player * fillPlayers() {
 ifstream file1;
 Player * fullPlayerPointer = new Player[244];
 Player ourPlayers[244];
 file1.open("Players.txt");
 if (file1.fail()) {
  cerr << "file1 did not open";
 }

 if (file1.is_open()){

 while (!file1.eof()){
  string size;
  getline(file1, size);
  for(int i = 0; i < 244; i++){
      file1 >> ourPlayers[i].playerID;
      file1 >> ourPlayers[i].name;
  }
 }
 file1.close();
}
 fullPlayerPointer = &ourPlayers[0];
 return fullPlayerPointer;
}

或使用preventDefault:

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

两者似乎都很好。 #view(与前面提到的答案一样)是您想要阻止触发所需属性的按钮的id。