【问题标题】:Conditional validation for a form inputs表单输入的条件验证
【发布时间】:2015-08-12 10:20:20
【问题描述】:

首先有一个附加按钮,该按钮生成一行,其中包含 1 个选择框、1 个输入框和 4 个复选框。添加的限制最多为 1-10 行。我不知道如何使用例如http://formvalidation.io/ 或独立的 jquery 代码进行 jquery 验证。我想应用的规则:

如果选择的角色是用户(不是管理员),我必须验证至少有一个复选框被选中并且用户没有在选择中出现两次

问题是我什至不知道从哪里开始,你能给我一些提示吗?

现场示例 :: http://jsfiddle.net/Yy2gB/131/

追加方法onClick

$(document).ready(function(){
    var obj = {"1":"Admin istrator","2":"User2"};

    //$('.selectpicker').selectpicker();
    $(".addCF").click(function(){

        count = $('#customFields tr').length + 1;
        var sel = $('<select name="user'+count+'">');

        for(key in obj){
            // The key is key
            // The value is obj[key]
            sel.append($("<option>").attr('value',key).text(obj[key]));
        }

        $('.selectpicker').selectpicker();
        $("#customFields").append('<tr><td>'+sel[0].outerHTML
        +'</td><td><input class="form-control" class="valid_role"'
        +' data-fv-field="emails" type="text" name="role'+count
        +'" /></td><td><input type="checkbox" class="mycheckbox"'
        +' name="can_edit'+count+'"></td><td><input type="checkbox" '
        +'class="mycheckbox" name="can_read'+count+'"></td><td><input '
        +'type="checkbox" class="mycheckbox" name="can_execute'+count+'">'
        +'</td><td><input type="checkbox" class="mycheckbox" '
        +'name="is_admin'+count+'"></td><td><a href="javascript:void(0);"'
        +'class="remCF">Remove</a></td></tr>');
        $('.mycheckbox').iCheck({
            checkboxClass: 'icheckbox_square-blue',
            radioClass: 'iradio_square-blue'
        });
        $('.selectpicker').selectpicker();
    });
    $("#customFields").on('click','.remCF',function(){
    $(this).parent().parent().remove();
    });
});

HTML 表单

<div class="col-md-12 col-lg-12"> 
  <table class="table table-user-information" id="customFields">
    <thead>
      <tr>
        <th class="standardTable_Header">User</th>
        <th class="standardTable_Header">Role</th>
        <th class="standardTable_Header">
          <span title="administrator projektu">Can read</span>
        </th>
        <th class="standardTable_Header">
           <span title="uprawnienie do edycji danych projektu">
             edit
           </span>
        </th>
        <th class="standardTable_Header">
          <span title="uprawnienie do odczytu danych projektu oraz przypisanych do niego zadań">
           excute
          </span>
        </th>
        <th class="standardTable_Header">
          <span title="uprawnienie do edycji danych projektu">
            admin
          </span>
         </th>
      </tr>
    </thead>
  <tbody>
    <button type="button" class="btn btn-default addCF">
      Append
    </button>
    </div>
  </tbody>
</table>

【问题讨论】:

    标签: javascript jquery validation formvalidation-plugin


    【解决方案1】:

    使用jQuery Validation Plugin 和通过this demo,我们可以执行以下操作:
    假设:角色复选框必须至少选中一个,当且仅当 - @987654325 @标签的值为User2 1- 用带有提交按钮的form 标记包裹您的表格:

    <div class="col-md-12 col-lg-12">
        <form id="myform">
            <table class="table table-user-information" id="customFields">
                ...
            </table>
            <input type="submit" value="submit" />
        </form>
    </div>
    

    2- 我们需要编辑复选框 html 以使它们都具有相同的名称但具有不同的值,例如:

    <input type="checkbox" class="mycheckbox" name="ourRoles" value="can_edit' ...>
    <input type="checkbox" class="mycheckbox" name="ourRoles" value="can_read' ...>
    

    等等。

    3- 添加以下脚本:

    // just for the demos, avoids form submit
        jQuery.validator.setDefaults({
            debug: true,
            success: "valid"
        });
        $("#myform").validate({
            rules: {
                ourRoles: {
                    required: function () {
                        if ($("select[name=user2]").val() == 2) {
                            return true;
                        } else {
                            return false;
                        }
                    }
                }
            }
        }); 
    

    this fiddle一起查看所有内容

    【讨论】:

    • 这仅适用于一个追加,如果它是动态的,它不会验证其他字段,此外它还需要检查是否至少有一个复选框被选中并且用户没有在选择中出现两次 -所以我猜这个方法不能解决这个问题
    • 感谢您的反馈,但您的问题是The thing is I don't even know where to start from, can you point me any hints?,所以我给了您一个提示并告诉您如何开始。根据我的回答完成您的项目并付出一些努力。如果您需要帮助,我确实可以帮助您:)
    • 看到这个问题。在 SO meta.stackoverflow.com/questions/276963/… 中了解问题和答案的格式很重要
    猜你喜欢
    • 1970-01-01
    • 2016-07-23
    • 1970-01-01
    • 2013-08-20
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多