【问题标题】:when one field is filled other fields must be required当一个字段被填写时,其他字段必须是必需的
【发布时间】:2016-02-05 10:25:54
【问题描述】:

我创建了一个表单。在其中我添加了验证。如果填写了表单中的一个字段,则必须填写所有其他字段,或者如果没有填写任何字段,则无需检查验证。 我正在使用方法焦点添加验证。一旦选择一个字段,所有字段都需要执行验证。

我使用 jquery-validation

 <script>

$(document).ready(function () {

    $("#myFormId").validate(
            {

            }
    );

    $('.contact1').focus(function () {
        $('.contact1').addClass("required");
    });
    $('.contact2').focus(function () {
        $('.contact2').addClass("required");
    });



});
    </script>

当我单击必填字段时,将添加到字段中。如果表单中没有填写任何字段,如何删除必填

【问题讨论】:

  • 假设您有一个 var 验证,在验证格式上设置为 true/false。然后您可以通过该文件设置/取消设置要求

标签: javascript jquery forms validation


【解决方案1】:

$('#myFormId').on('change', function() { // change or input event
  var $inputs = $(this).find(':input:not(:submit)');
  var anyInputChanged = !!$inputs.filter(function() {
    return this.value !== this.defaultValue;
  }).length;
  $inputs.toggleClass('required', anyInputChanged);
});
.required {
  outline: 1px solid red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form id="myFormId">
  <input>
  <input>
  <input type="submit">
</form>

如果表单中的任何输入不再具有其默认值,您可以切换所需的类:

$('#myFormId').on('change', function() { // change or input event
  var $inputs = $(this).find(':input:not(:submit)');
  var anyInputChanged = !!$inputs.filter(function() {
    return this.value !== this.defaultValue;
  }).length;
  $inputs.toggleClass('required', anyInputChanged);
});

【讨论】:

    【解决方案2】:

    你的代码与你想要做的不太匹配,它可能看起来更像这样:

    <script>
    
    $(document).ready(function () {
    
        $("#myFormId").validate(
            {
                ...
            }
        );
    
        $('#myFormId input').on('focus keyup', function() {
            if($(this).val().length > 0){
                $('#myFormId input').attr("required",true);
            }
            else{
                $('#myFormId input').attr("required",false);
            }
        });
    
        });
    </script>
    

    另外,您可能需要在更改属性时重新调用表单上的验证函数(但不要引用我的话)。

    这应该更接近你想要的,但可以玩一玩!

    【讨论】:

      猜你喜欢
      • 2018-04-30
      • 2019-07-23
      • 2016-01-19
      • 1970-01-01
      • 2018-07-03
      • 2021-10-09
      • 1970-01-01
      • 2015-03-08
      • 2014-10-16
      相关资源
      最近更新 更多