代码之家  ›  专栏  ›  技术社区  ›  Javed

Validate JS error message not clear on Bootstrap modal on select2下拉列表

  •  0
  • Javed  · 技术社区  · 4 年前

    Validation message image

    下面是常见的验证函数。在上进行了更改 resetControls 但它不起作用。

    'use strict';
    $(document).ready(function () {
    
    validate.extend(validate.validators.datetime, {
    
        parse: function(value, options) {
    
            return +moment.utc(value);
        },
        // Input is a unix timestamp
        format: function(value, options) {
    
            var format = options.dateOnly ? "DD/MM/YYYY" : "DD/MM/YYYY";
            return moment.utc(value).format(format);
        }
    });
    
    
    var adminTeachertimetableConstraints = {
        teacherDropdown: {
            presence: true,
        },
        studentDropdown:{
            presence: true,
        },
        bookedDateDropdown:{
            presence: true,
        },
        
    };
    
    // Hook up the form so we can prevent it from being posted
    var form = document.querySelector("form#rescheduleBooking");
    form.addEventListener("submit", function(ev) {
        ev.preventDefault();
        handleFormSubmit(form);
    });
    
    // Hook up the inputs to validate on the fly
    var inputs = document.querySelectorAll("input, textarea, select");
    for (var i = 0; i < inputs.length; ++i) {
        inputs.item(i).addEventListener("change", function(ev) {
            resetControls(inputs);
            var errors = validate(form, adminTeachertimetableConstraints) || {};
            generateMessage(errors, this);
        });
    }
    
    function handleFormSubmit(form, input) {
        var errors = validate(form, adminTeachertimetableConstraints);
        if(typeof(errors)  === 'undefined'){
            $(form).trigger('submit');
        }
        generateMessage(errors, input);
    }
    
    function generateMessage(errors, input){
        $.each(errors, function(input, error){
            $.each(error, function(index, msg){
                addError(input, msg);
            });
        });
    }
    
    
    function addError(input, error) {
        var block = document.createElement("p");
        block.classList.add("text-danger");
        block.classList.add("error");
        block.innerText = error;
        $("#"+input).nextAll("span.messages:last-child").html(block);
    }
    
    function resetControls(inputs){
        $.each(inputs, function(index, input){
            $(input).nextAll("span.messages:last-child").html("");
        });
    }
    });
    

    0 回复  |  直到 4 年前