【问题标题】:jQuery .each through few text inputs instead of javascript .find functionjQuery .each 通过少量文本输入而不是 javascript .find 函数
【发布时间】:2020-08-26 15:32:55
【问题描述】:

我想对我的输入文本表单进行验证,除非完成所有输入表单,否则该用户无法进一步操作。我想通过每一个输入,即使第一个完成,用户也需要完成另外 2 个等,但此时我只能通过第一个并且不知道如何遍历每个输入文本.

我的html:

<div class="write-to-us">
                <div class="col-md-12 field">
                    <p>Write to us</p>
                </div>
                <div class="col-md-12 field">
                    <div class="my-form">
                        <label>Name</label>
                        <input  type="text" name="subject" class="my-text-input">
                        <div class="label-error">Write your Name</div>
                    </div> 
                </div>
                <div class="col-md-12 field">
                    <div class="my-form">
                        <label>Surname</label>
                        <input type="text" name="subject" class="my-text-input">
                        <div class="label-error">Write your surname</div>
                </div>
                </div>
                <div class="col-md-12 field">
                    <div class="my-form">
                        <label">Question</label>
                        <textarea type="text" name="subject" class="my-text-input"></textarea>
                    </div>
                </div>
                <div>
                    <button class="my-button">Check it</button>
                </div>
            </div>

还有我用于迭代的 js 代码:

myFunction: function() {
            var $formField = $('.write-to-us');
            if (!$formField.exists()) {
                return;
            }
            initValidation();
            function initValidation() {
                var errorMsg = $formField.find('.label-error');
                var button = $formField.find('.my-button');
                var input = $formField.find('input');
                var inputContainer = $formField.find('.my-form')
                button.click(function(event) {
                    if(!input.val().trim()) {
                        errorMsg.css('visibility', 'visible');
                        inputContainer.addClass('error');
                        event.preventDefault();
                    }
                });
        },

我猜这个问题出在.find 上,应该是一些 jQuery .each 但我不知道如何更改它。

【问题讨论】:

  • .exists() 是什么?猜你正在使用插件?
  • 所以遍历所有输入。不确定您在使用 api.jquery.com/each 时遇到了什么问题
  • .exists 是 jQuery 函数。我的问题是我不知道如何实现它。我尝试使用 .each,但每次都不起作用

标签: javascript jquery


【解决方案1】:

我会尝试做这样的事情而不是找到。

function initValidation() {
  $('.my-button').click(function(){
    $("input").each(function() {
      var element = $(this);
      if (element.val() == "") {
        element.closest('.label-error').css('visibility', 'visible');
        element.closest('.my-form').addClass('error');
      }
    });
  });
}

【讨论】:

  • 您能描述一下错误吗?阅读:stackoverflow.com/questions/16211871/…
  • 也尝试使用console.log或调试器;查明错误所在。
  • 似乎我的 html 的功能验证不起作用。什么都没有发生
  • 您检查控制台是否有错误?我只是把它背后的逻辑,可能有一些我无法检查的错误。
猜你喜欢
  • 2012-02-27
  • 2016-04-13
  • 1970-01-01
  • 2011-07-19
  • 2019-08-07
  • 2018-10-01
  • 1970-01-01
  • 2016-12-13
  • 1970-01-01
相关资源
最近更新 更多