jQuery验证+对话框

时间:2016-07-22 06:07:42

标签: jquery validation dialog

我正在构建jquery验证,我需要通过显示Dialog来支持它。

要检查多个选择/输入,因此现在我一次显示多个对话框,并且只显示一个对话框,其中包含尚未验证的字段列表(错误)。

HTML:

2.+(4) #=> 6

jQuery的:

<form method='post'>
    input 1: <input type="text" id="input1" name="input1" class="in1"><br>  
    input 2: <input type="text" id="input2" name="input2" class="in2"><br>  
    input 3: <input type="text" id="input3" name="input3" class="in3"><br>
    <input type="submit"  value="Submit" id="submit" name="submit">         
</form>

<div id="dialog-input1" title="Error" class="val-noshow">Empty Input 1</div>
<div id="dialog-input2" title="Error" class="val-noshow">Empty Input 2</div>
<div id="dialog-input3" title="Error" class="val-noshow">Empty Input 3</div>

CSS:

$(document).ready(function () {

    $("#submit").click(function () {

        var input1 = $('#input1').val();
        var input2 = $('#input2').val();
        var input3 = $('#input3').val();

        var valid = true;

        if (input1 == "")
        {
            $('.in1').removeClass('valid').addClass('error');
            valid = false;
            $(function () {
                $("#dialog-input1").dialog({
                    modal: true,
                    buttons: {
                        Ok: function () {
                            $(this).dialog("close");
                        }
                    }
                });
            });
        }
        else {
            $('.in1').removeClass('error').addClass('valid');
        }

        if (input2 == "")
        {
            $('.in2').removeClass('valid').addClass('error');
            $(function () {
                $("#dialog-input2").dialog({
                    modal: true,
                    buttons: {
                        Ok: function () {
                            $(this).dialog("close");
                        }
                    }
                });
            });
            valid = false;
        }
        else {
            $('.in2').removeClass('error').addClass('valid');
        }

        if (input3 == "")
        {
            $('.in3').removeClass('valid').addClass('error');
            $(function () {
                $("#dialog-input3").dialog({
                    modal: true,
                    buttons: {
                        Ok: function () {
                            $(this).dialog("close");
                        }
                    }
                });
            });
            valid = false;
        }
        else {
            $('.in3').removeClass('error').addClass('valid');
        }

        return valid;

    });
});

工作样本jsfiddle:https://jsfiddle.net/nitadesign/sd8Lk9dv/

我怎么能做到这一点?

2 个答案:

答案 0 :(得分:1)

像这样改变你的jquery。

<script>
$(document).ready(function () {

    $("#submit").click(function (event) {

        event.preventDefault();            
        $("#dialog-input").html("");

        var input1 = $('#input1').val();
        var input2 = $('#input2').val();
        var input3 = $('#input3').val();

        var valid = true;

        if (input1 == ""){

            $('.in1').removeClass('valid').addClass('error');
            $("#dialog-input").append("<p>Empty Input 1</p>");

            valid = false;
        }
        else { $('.in1').removeClass('error').addClass('valid'); }

        if (input2 == "") {

            $('.in2').removeClass('valid').addClass('error');
            $("#dialog-input").append("<p>Empty Input 2</p>");

            valid = false;
        }
        else { $('.in2').removeClass('error').addClass('valid'); }

        if (input3 == "") {

            $('.in3').removeClass('valid').addClass('error');
            $("#dialog-input").append("<p>Empty Input 3</p>");

            valid = false;
        }
        else { $('.in3').removeClass('error').addClass('valid'); }

        if( !valid){ 

            $(function () {
                $("#dialog-input").dialog({
                    modal: true,
                    buttons: {
                        Ok: function () {
                            $(this).dialog("close");
                        }
                    }
                });
            });
        }
        else{ return valid; }
    });
});
</script>

由于我们将所有错误消息附加到单个容器中,因此请保留单个div。

<div id="dialog-input" title="Error" class="val-noshow"></div>

答案 1 :(得分:1)

基于Srikanth的答案,但有些编辑,因为那里有一些错误:

$("#submit").click(function(event) {

    $("#dialog-input").html("");

    var input1 = $('#input1').val();
    var input2 = $('#input2').val();
    var input3 = $('#input3').val();

    var valid = true;

    if (input1 == "") {

      $('.in1').removeClass('valid').addClass('error');
      $("#dialog-input").append("<p>Empty Input 1</p>");

      valid = false;
    } else {
      $('.in1').removeClass('error').addClass('valid');
    }

    if (input2 == "") {

      $('.in2').removeClass('valid').addClass('error');
      $("#dialog-input").append("<p>Empty Input 2</p>");

      valid = false;
    } else {
      $('.in2').removeClass('error').addClass('valid');
    }

    if (input3 == "") {

      $('.in3').removeClass('valid').addClass('error');
      $("#dialog-input").append("<p>Empty Input 3</p>");

      valid = false;
    } else {
      $('.in3').removeClass('error').addClass('valid');
    }

    if (!valid) {

      $(function() {
        $("#dialog-input").dialog({
          modal: true,
          buttons: {
            Ok: function() {
              $(this).dialog("close");
            }
          }
        });
      });
    }

    return valid;
  });