【问题标题】:Client-side JavaScript field validation客户端 JavaScript 字段验证
【发布时间】:2017-04-07 11:49:40
【问题描述】:

我有一个特殊的场景,在客户端验证方面我需要一些帮助。

我有一些输入字段是必需的(不是 HTML 必需的),但使用名为“requiredInput”的类将它们标识为必需字段,并在用户单击提交按钮时在服务器端进行评估。

但是,我想在用户离开该字段时在客户端验证输入字段并禁用提交,直到填写所有必填字段。

我该如何处理这个场景,以便完全处理这个客户端而不是等待服务器端提交来执行验证?

<input type="text" name="lastName" id="lastName" class="requiredInput" tabindex="3">

注意:我不想在提交时执行验证,我想验证 onblur 并禁用提交,直到填写所有必填字段。

【问题讨论】:

  • 您好@DurgpalSingh,我不想在提交时执行验证,而是想对输入字段进行模糊处理。
  • html5 有一个运行良好的“必需”属性。否则会有这样的事情:jqueryvalidation.org

标签: javascript jquery html validation client-side-validation


【解决方案1】:

你有一堆 JS 验证包,你可以在互联网上找到它们。

目前我认为最好的之一是ParsleyJS。您可以使用一些在客户端完美运行的内置(和一些额外的)验证器。 Ypou 可以自己设计一次。如果您不想将整个表单发送到服务器,也可以远程验证字段。

【讨论】:

  • 另一个是 jQuery 验证插件,包含在一些引导模板中。它真的很容易使用。它根据输入的 id 进行验证。它有一些内置方法,在 StackOverflow 上有一个标签,还允许您创建自定义方法。
  • 你好@Filip:ParsleyJS 看起来很有前途,但是,它没有给我验证字段 onblur 的选项?我目前已经具备提交时验证的功能。
  • 嗯,是的,我给你验证模糊
【解决方案2】:

如果你不想要一个纯 js 解决方案并且想要完全控制什么是有效的,你可能想做这样的事情:

创建一个validateInput() 函数来获取所有输入字段,检查它们是否有内容(以及您可能想要执行的任何其他检查),如果一切都符合预期,则继续启用提交按钮。将该函数附加到每个输入字段的 onblur 事件。

function validateInput(){
  let validInput = true;
  let field1Content = document.getElementById('field1').value;
  let field2Content = document.getElementById('field2').value;
  if(field1Content.length === 0 || field2Content === 0)
      validInput = false;

  if(validInput)
    //enable submit button
}

【讨论】:

    【解决方案3】:

    如果你有 Jquery,你可以轻松做到这一点,试试下面

    <input type="text" name="lastName" id="txtbox1" class="requiredInput clsValidate" tabindex="3">
    <input type="text" name="lastName" id="txtbox2" class="requiredInput clsValidate" tabindex="3">
    <input type="text" name="lastName" id="txtbox3" class="requiredInput clsValidate" tabindex="3">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    
    <script type="text/javascript">
           $(document).ready(function () {
        ValidateInput();
    });
    
    $(document).on('change', 'input.clsValidate[type=text]', function () {
        ValidateInput();
    });
    
    function ValidateInput() {
        var cnt = 0;
        $('input.clsValidate[type=text]').each(function (i, obj) {
            if ($(this).val().trim().length <= 0) {
                cnt++;
            }
            if (cnt > 0) {
                $('#btnsubmit').attr('disabled', 'disabled')
            } else {
                $('#btnsubmit').removeAttr('disabled');
            }
        });
    }
    </script>
    

    【讨论】:

    • 您好,这很好,但这只是启用和禁用提交按钮。我可以不只是触发现场验证,因为一旦它进行服务器端往返,它确实会显示基于该类的错误。
    猜你喜欢
    • 2019-01-04
    • 1970-01-01
    • 2011-01-31
    • 2012-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    相关资源
    最近更新 更多