客户端JavaScript字段验证

时间:2016-11-23 12:46:12

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

我有一个特殊情况,我需要在客户端验证方面提供一些帮助。

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

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

如何完全处理此客户端而不是等待服务器端提交来执行验证?

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

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

如果你想要一个纯粹的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
}

答案 2 :(得分:1)

如果您有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>