Validate Sum-Of-Multiple

JQuery Validate Validate the sum of multiple inputs is over a certain amount

by Robert Dodd

HTML

<script src="http://jzaefferer.github.com/jquery-validation/jquery.validate.js"></script>
<form id="search-form" >
    <div class="passengers-container">
        <span>
            <select id="adults" name="adults" class="passengers">
                <option value="0" disabled selected style='display:none;'>Adults</option>
                <option value="0">0</option>
                <option value="1">1</option>
                <option value="2">2</option>
            </select>
        </span>
        <span>
            <select id="children" name="children" class="passengers">
                <option value="0" disabled selected style='display:none;'>Children</option>
                <option value="0">0</option>
                <option value="1">1</option>
                <option value="2">2</option>
            </select>
        </span>
    </div>
    <hr>
    <input type="submit" value="Search" id="submitbutton" /><br/>
</form>

<script src="http://maps.googleapis.com/maps/api/js?libraries=places&sensor=false"></script>

CSS

.gmap {
    width:100%;
    height:250px;
    border: 1px solid #4D2722;
}
.border_box {
    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
}
}

JavaScript

function initialize() {
    
    $.validator.addMethod(
        "minSum",
        function (value, element, params) {
            var sumOfVals = 0;
            $("select.passengers").each(function () {
                val = parseInt($(this).val(), 10);
                if (!val) val = 0;
                sumOfVals = sumOfVals + val;
            });
            if (sumOfVals >= params) return true;
            return false;
        },
        jQuery.format("Sum must be at least {0}")
    );
    
    $("#search-form").validate({
        rules: {
        },
        submitHandler: function(form) {
            alert('YEAH');
            return false;
        },
        groups: {
            passengers: "adults children"
        },
        errorPlacement: function(error, element) {
            if ($(element).hasClass("passengers"))
                error.insertAfter("#children");
            else
                error.insertAfter(element);
        }
    });
    
    $(".passengers").rules('add', {minSum: 1});
}

$(function(){
    initialize(); 
});