忽略验证

时间:2016-12-06 16:21:22

标签: javascript css jsp

我有一个带有div的文件.jsp,我根据select的值显示/隐藏。

如果我的选择值是"否"隐藏div,如果是"是"显示div

如果验证需要参数,我使用 ng-required

但如果价值是"否"并且我验证了我的表单,我无法验证它,因为隐藏的div中的字段为空

我测试了一些但没有结果。

CODE

<div class="row" id="yesAuth">
    <div class="col-md-6" ng-class="{ 'has-error': invalid.basicAuthForBackendUsername, 'has-success': valid.basicAuthForBackendUsername}">
       <div class="form-group" >
           <label for="basicAuthForBackendUsername">basic auth username *</label>
           <input type="text" name="basicAuthForBackendUsername" class="form-control" placeholder="basic auth username" ng-model="api.basicAuthForBackendUsername" ng-required="true"> 
           <span id="helpBlock" class="help-block" ng-show="help.basicAuthForBackendUsername.required">basic auth username is required.</span>       
      </div>                                
   </div>
</div>

JS

$(function () {
      $("#basicAuth").change(function () {
      if($("#basicAuth option:selected").val() == 'yes'){
          $('#yesAuth').show();
      }
      else{
          $('#yesAuth').hide();
      }
      });
   });

$("#basicAuth").validate({
     ignore: ".hidden"
});

CSS

<style media="screen" type ="text/css">
    .hidden {
       visibility: hidden;
    }
</style>

如何解决问题?

非常感谢。

3 个答案:

答案 0 :(得分:1)

请使用角度验证并使用ng-if进行显示并隐藏div。 如果有角度,您不需要使用JS代码。

你可以轻松地使用ng-if =&#34;在这里设置条件&#34;

当元素隐藏(不在DOM上显示)时,验证将不起作用

答案 1 :(得分:0)

隐藏元素时需要使用.removeAttribute(),显示元素时需要使用.setAttribute()(来自普通的旧版香草JavaScript)。

$(function () {
      $("#basicAuth").change(function () {
      if($("#basicAuth option:selected").val() == 'yes'){
          $('#yesAuth').show();
          $('#basicAuthForBackendUsername').setAttribute("ng-required", "true");
      }
      else{
          $('#yesAuth').hide();
          $('#basicAuthForBackendUsername').removeAttribute("ng-required");
      }
      });
   });

我不熟悉AngularJS所以如果我错了请纠正我。

答案 2 :(得分:0)

我测试类似的东西,但现在如果值为&#34;是&#34;并且我验证了我的表单,该字段未被检查,而它是空的..

$(function () {
    $('#yesAuth').hide();
    $("#basicAuth").change(function () {
               if($("#basicAuth option:selected").val() == 'yes'){
                            $('#yesAuth').show();
                            $('#basicAuthForBackendUsername').attr("ng-required","true");
                            $('#basicAuthForBackendPassword').attr("ng-required","true");
                            alert("VOILA" + $('#basicAuthForBackendPassword').attr("ng-required"))

                }
                else{
                            $('#yesAuth').hide();
                            $('#basicAuthForBackendUsername').attr("ng-required","false");
                            $('#basicAuthForBackendPassword').attr("ng-required","false");
                            alert("VOILA" + $('#basicAuthForBackendPassword').attr("ng-required"));
                }
     });
});