bootstrap表单验证只需要一个字段

时间:2017-07-17 06:25:24

标签: javascript jquery html twitter-bootstrap-3

我是这个整个bootstrap jquery html(web开发)的新手。 我有一个具有userID和screenName输入字段的表单。 在验证时,我需要确保至少输入其中一个(如果两者都输入,我只需要一个)。 html:



this.addFormValidators = function () {
                $('#editCreatePipeForm').formValidation({
                    framework: 'bootstrap',
                    icon: {
                        valid: 'glyphicon glyphicon-ok',
                        invalid: 'glyphicon glyphicon-remove',
                        validating: 'glyphicon glyphicon-refresh'
                    },
                    fields: {
                        ConsumerKey: {
                            validators: {
                                notEmpty: {
                                    message: 'The Consumer Key is required'
                                }
                            }
                        },
                        ConsumerKeySecret: {
                            validators: {
                                notEmpty: {
                                    message: 'The Consumer Key Secret is required'
                                }
                            }
                        },
                        CollectionIntervalSec: {
                            validators: {
                                notEmpty: {
                                    message: 'The collection interval is required'
                                },
                                between: {
                                    message: 'The collection interval must be a number greater than 10',
                                    min: 10,
                                    max: 1000000000
                                }
                            }
                        },
                        //KeepHistoricalDataTimeSec: {
                        //    validators: {
                        //        notEmpty: {
                        //            message: 'The retain data value is required'
                        //        },
                        //        between: {
                        //            message: 'The retain data value must be a number greater than 1000',
                        //            min: 1000,
                        //            max: 1000000000
                        //        }
                        //    }
                        //},
                        Description: {
                            validators: {
                                stringLength: {
                                    max: 500,
                                    message: 'The description must be less than 500 characters long'
                                }
                            }
                        }
                    }
                }, null);
            };

<div class="row">
                                <div class="col-md-6">
                                    <div class="form-group">
                                        <label for="ScreenName" class="col-md-4 YcdFormLabel" title="screen name of user to retrieve">Screen name</label>
                                        <div class="col-md-8">
                                            <input type="text" placeholder="Screen Name" class="form-control user" autocomplete="off"
                                                   name="screenName"
                                                   id="screenName" data-bind="value: screenName, valueUpdate: 'keyup'"/>
                                        </div>
                                    </div>
                                </div>
                            </div>
                            <div class="row">
                                <div class="col-md-4"/>
                                    <div class="col-md-6">
                                        <div class="form-group">
                                            @*<div class="col-md-8">*@
                                            <label for="or" class="col-md-10">or</label>

                                            @*</div>*@
                                        </div>
                                    </div>
                                </div>
                            <div class="row">
                                <div class="col-md-6">
                                    <div class="form-group">
                                        <label for="userID" class="col-md-4 YcdFormLabel" title="user_ID of user to retrieve">User ID</label>
                                        <div class="col-md-8">
                                            <input type="text" placeholder="User ID" class="form-control user" autocomplete="off"
                                                   name="userID"
                                                   id="userID" data-bind="value: userID, valueUpdate: 'keyup'"/>
                                        </div>
                                    </div>
                                </div>
                            </div>
&#13;
&#13;
&#13;

任何帮助将不胜感激......

2 个答案:

答案 0 :(得分:0)

我希望我的代码可以帮到你。
JSFIDDLE:https://jsfiddle.net/aice09/3wjdvf30/
CODEPEN:https://codepen.io/aice09/pen/XgQyem
GITHUB:https://github.com/Ailyn09/project102/blob/master/chooseintwoinput.html

&#13;
&#13;
function verify() {
        var screenName = document.getElementById("screenName").value;
        var userID = document.getElementById("userID").value;

        if (userID === '' && screenName === '') {
            alert('Add value to any field');
        }
        if (userID !== '' && screenName === '') {
            alert('Your screen name are currently empty. The value you will be taken is your screen name');
            document.getElementById("takedvalue").value = userID;
        }
        if (userID === '' && screenName !== '') {
            alert('Your user id are currently empty. The value you will be taken is your user identification');
            document.getElementById("takedvalue").value = screenName;
        }

        if (userID !== '' && screenName !== '') {
            document.getElementById("mainbtn").style.display = "none";
            document.getElementById("backbtn").style.display = "initial";
            document.getElementById("choosescreenName").style.display = "initial";
            document.getElementById("chooseuserID").style.display = "initial";
        }
    }

    //Reset Form
    $('.backbtn').click(function () {
        document.getElementById("mainbtn").style.display = "initial";
        document.getElementById("backbtn").style.display = "none";
        document.getElementById("choosescreenName").style.display = "none";
        document.getElementById("chooseuserID").style.display = "none";
    });

    //Choose First Input
    $('.choosescreenName').click(function () {
        var screenName = document.getElementById("screenName").value;
        document.getElementById("takedvalue").value = screenName;
    });

    //Choose Second Input
    $('.chooseuserID').click(function () {
        var userID = document.getElementById("userID").value;
        document.getElementById("takedvalue").value = userID;
    });
&#13;
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://code.jquery.com/jquery-1.12.3.min.js"></script>
<div class="container">
        <form action="POST">
            <div class="row">
                <div class="col-md-12">
                    <div class="form-group">
                        <label for="screenName">Screen name</label>
                        <input type="text" placeholder="Screen Name" class="form-control " autocomplete="off" name="screenName" id="screenName" />
                    </div>
                </div>
                <div class="col-md-12">
                    <div class="form-group">
                        <label for="userID">User ID</label>
                        <input type="text" placeholder="User ID" class="form-control user" autocomplete="off" name="userID" id="userID" />
                    </div>
                </div>
                <div class="col-md-12">
                    <button type="button" class="btn btn-primary" id="mainbtn" onclick="verify();">SUBMIT</button>
                    <button type="reset" class="btn btn-primary backbtn" id="backbtn" style="display:none;">BACK</button>
                    <button type="button" class="btn btn-primary choosescreenName" id="choosescreenName" style="display:none;">CHOOSE SCREEN NAME</button>
                    <button type="button" class="btn btn-primary chooseuserID" id="chooseuserID" style="display:none;">CHOOSE USER ID</button>
                </div>

                <div class="col-md-12">
                    <hr>
                    <div class="form-group">
                        <label for="userID">Value</label>
                        <input type="text" placeholder="Taken Value" class="form-control" id="takedvalue" readonly />
                    </div>
                </div>
            </div>
        </form>
    </div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我在提交之前添加了另一个我调用它的函数,而不是使用bootstrap和jquery表单验证。

private hasTimelineAndUsername = (): boolean => {
            if (this.viewModel.searchSelection() == "timeline"
                && ((this.viewModel.userID() == "" ||
                    this.viewModel.userID() == null) &&
                    (this.viewModel.screenName() == "" ||
                        this.viewModel.screenName() == null))) {
                return false
            }
            return true;
        }

提交功能:

  public getCollectionParameters() {
            var fv = $('#editCreatePipeForm').data('formValidation')
            fv.validate();
            var isValid = fv.isValid();
            if (!isValid) {
                toastr.error("Please fix all problems before saving");
                return null;
            }
            if (!this.hasTimelineAndUsername()) {
                toastr.clear();
                toastr.error("Please type username/userID");
                return null;
            }
            if (!this.validateData()) {
                return null;
            }

            return JSON.stringify(ko.mapping.toJS(this.viewModel));
        }