JavaScript代码不起作用,编写了此代码来验证我的表单,但它不起作用

拉纳兹116

一种将数据插入mysql但在插入数据之前的表单,我想编写一个JavaScript,该JavaScript将在提交之前验证表单,但可以使其正常工作。在HTML中,我为输入添加了required和pattern属性,以验证表单数据并检查用户是否填写了必填字段,但是我还想添加一个脚本,该脚本还将验证表单并在标记中显示一条消息, id errorMessage,但似乎无法正常工作。

var inputFields = document.theForm.getElementsByTagName("input");


for (key in inputFields) {

  var myField = inputFields[key];
  var myError = document.getElementById('errorMessage');

  myField.onchange = function() {
      var myPattern = this.pattern;
      var myPlaceholder = this.placeholder;
      var isValid = this.value.search(myPattern) >= 0;

      if (!(isValid)) {
        myError.innerHTML = "Input does not match expected pattern. " + myPlaceholder;
      } else { //pattern not valid
        myError.innerHTML = "";
      } //pattern is valid

    } // myField has changed



} // inputFields
<form id="createForm" name="theForm" method="post" action="createUser.php">
  <legend><span class="icon"><img src="/registerUser/img/createIcon.png"></span> Create New User</legend>
  <p><span id="requiredfields">* required field.</span>
  </p>

  <span id="formMessage" class="message"> </span>
  <span id="errorMessage"> </span>

  <input id="fname" type="text" name="fname" placeholder="Name *" pattern="[A-Za-z ]+" required>
  <br>
  <br>

  <input id="email" type="email" name="email" placeholder="Email *" required>
  <br>
  <br>

  <input id="username" type="text" name="username" placeholder="Username *" required>
  <br>
  <br>

  <input id="password" type="password" name="password" placeholder="Password *" required>
  <br>
  <br>

  <label for="roles">Roles:</label>
  <select id="role" name="roles">
    <option>Select Role</option>
    <option value="empty"></option>
    <option value="Reporter">Reporter</option>
    <option value="Lover">Lover</option>
    <option value="Other">Other</option>
  </select>
  <br>
  <br>

  <input id="create" type="submit" name="createUser" value="Create User">

</form>

nnnnnn

当您将输入元素验证模式指定为html5属性时,如下所示:

pattern="[A-Za-z ]+"

...浏览器检查整个输入值是否与模式匹配。换句话说,即使在模式中未明确显示,您的模式也将被视为^[A-Za-z ]+$ ^$

但是在您的JavaScript代码中,当您使用如下模式时:

var myPattern = this.pattern; // get pattern from element
var isValid = this.value.search(myPattern) >= 0;

...该.search()方法不会尝试匹配整个字符串,它会返回字符串中第一个模式匹配项的索引。这意味着,例如,对于您的“名称”字段,只要至少一个字符与模式匹配,即使其他字符不匹配,您的JS也会将其视为有效。

解决此问题的最简单方法是更新您的模式:

pattern="^[A-Za-z ]+$"

或者,您可以将JS更新为如下所示的内容:

var isValid = !myPattern || this.value.search("^" + myPattern + "$") >= 0;

也就是说,在模式周围放置^$强制JS使整个字符串与该模式匹配,但是只有在为字段指定了非空白模式(您的某些字段没有模式)的情况下,才进行测试。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我试图编写一个代码来查找一个单词是否是回文,但它不起作用。它有什么问题?

来自分类Dev

我从我们的书中复制了这段代码,但它不起作用

来自分类Dev

我用 Javascript 函数和验证写了这个 HTML 代码..但是验证不起作用,我做错了什么

来自分类Dev

HTML5表单验证的Javascript代码不起作用

来自分类Dev

HTML5表单验证的Javascript代码不起作用

来自分类Dev

我在laravel代码中找不到问题。但它不起作用。(本土化)

来自分类Dev

我试过调试这段代码,但它似乎不起作用

来自分类Dev

代码不起作用(JavaScript)

来自分类Dev

javaScript代码不起作用

来自分类Dev

我试图在 C# wpf 中获得击键,但它不起作用。我的代码错了吗?

来自分类Dev

为什么我设置了〜/ .bashrc但它不起作用?

来自分类Dev

我已经下载了 pig 但它不起作用

来自分类Dev

我试图使日期简洁,但它不起作用

来自分类Dev

代码不起作用

来自分类Dev

我正在尝试创建一个 javascript 页面以将信息输入到表单中,但它不起作用

来自分类Dev

为什么此代码不起作用?

来自分类Dev

有人来解释为什么此代码对我不起作用?

来自分类Dev

我的代码不起作用-表单未提交

来自分类Dev

为什么此C代码在JavaScript中不起作用?

来自分类Dev

此 javascript 代码在 Internet Explorer 11 中不起作用

来自分类Dev

代码不起作用。单选按钮验证

来自分类Dev

Vue:登录验证在我的代码中不起作用

来自分类Dev

为什么我的日期验证代码不起作用?

来自分类Dev

我正在尝试在JS中编写一个简单的异步代码,但它似乎不起作用

来自分类Dev

验证Javascript中的表单不起作用

来自分类Dev

JavaScript表单验证不起作用

来自分类Dev

JavaScript验证表单不起作用

来自分类Dev

我试图用javascript中的time属性创建某些东西,但它不起作用

来自分类Dev

提交表单后,如何显示Div并隐藏表单?我试过jQuery,但它不起作用。帮我?

Related 相关文章

  1. 1

    我试图编写一个代码来查找一个单词是否是回文,但它不起作用。它有什么问题?

  2. 2

    我从我们的书中复制了这段代码,但它不起作用

  3. 3

    我用 Javascript 函数和验证写了这个 HTML 代码..但是验证不起作用,我做错了什么

  4. 4

    HTML5表单验证的Javascript代码不起作用

  5. 5

    HTML5表单验证的Javascript代码不起作用

  6. 6

    我在laravel代码中找不到问题。但它不起作用。(本土化)

  7. 7

    我试过调试这段代码,但它似乎不起作用

  8. 8

    代码不起作用(JavaScript)

  9. 9

    javaScript代码不起作用

  10. 10

    我试图在 C# wpf 中获得击键,但它不起作用。我的代码错了吗?

  11. 11

    为什么我设置了〜/ .bashrc但它不起作用?

  12. 12

    我已经下载了 pig 但它不起作用

  13. 13

    我试图使日期简洁,但它不起作用

  14. 14

    代码不起作用

  15. 15

    我正在尝试创建一个 javascript 页面以将信息输入到表单中,但它不起作用

  16. 16

    为什么此代码不起作用?

  17. 17

    有人来解释为什么此代码对我不起作用?

  18. 18

    我的代码不起作用-表单未提交

  19. 19

    为什么此C代码在JavaScript中不起作用?

  20. 20

    此 javascript 代码在 Internet Explorer 11 中不起作用

  21. 21

    代码不起作用。单选按钮验证

  22. 22

    Vue:登录验证在我的代码中不起作用

  23. 23

    为什么我的日期验证代码不起作用?

  24. 24

    我正在尝试在JS中编写一个简单的异步代码,但它似乎不起作用

  25. 25

    验证Javascript中的表单不起作用

  26. 26

    JavaScript表单验证不起作用

  27. 27

    JavaScript验证表单不起作用

  28. 28

    我试图用javascript中的time属性创建某些东西,但它不起作用

  29. 29

    提交表单后,如何显示Div并隐藏表单?我试过jQuery,但它不起作用。帮我?

热门标签

归档