b0y-101 Mini Shell


Current Path : E:/www/plan/components/com_jevents/assets/js/
File Upload :
Current File : E:/www/plan/components/com_jevents/assets/js/JevStdRequiredFieldsJQ.js

/* 
 * Filename: JevStdRequiredFieldsJQ.js
 * Class: jevstdrequiredfields
 * Author: Carlos M. Cámara from JEvents.net
 * Use: Check required fields
 */

var JevStdRequiredFields = {
    fields: new Array(),
    verify: function (form) {
        valid = true;

        form = jevjq(form);
        var messages = new Array();
        // This is a Javascript each over an array !
        JevStdRequiredFields.fields.forEach(function (item, i) {
            var name = item.name;
            var value = "";            
            if (item.preAction) {
                try {
                    eval(item.preAction);
                }
                catch (ex){
                    //alert(ex.message);
                }
            }
            if (item.getValue) {
                try {
                    value = eval(item.getValue);
                }
                catch (e){
                    alert("failed "+e.message);
                    
                }
            }
                       
            var noncustomname = name.replace("custom_jform", "jform");
            // to test field id we must NOT have [ or ] in the name
            var nosquarename = name.replace(/\[/g, "");
            nosquarename = nosquarename.replace(/\]/g, "");
            // custm fields checkbox test - must replace [] and custom_
            var checkboxname = name.replace(/\[\]/g, "");
            if (checkboxname == name) {
                checkboxname = "ThisIsToBlockAction" + checkboxname;
            }
            checkboxname = checkboxname.replace("custom_jform", "jform");

            // should we skip this test because of category restrictions?
            if (typeof (JevrCategoryFields) != 'undefined' && JevrCategoryFields.skipVerify(name))
                return;
            var matches = new Array();
            /*
             form.serializeArray().forEach( function(  testitem, testi) {
             if (testitem.name == name || "custom_" + testitem.name == name || (testitem.id && testitem.id == name) || ("#" + testitem.id) == name || jevjq(testitem).hasClass(name.substr(1))) {
             matches.push(testitem);
             }
             });
             */
            // Problem with multiple select is you may get the same element more than once!
            //var testitem = form.find("[name="+name+"]" , "[name='"+name+"']" ,"[name='custom_"+name+"']",  "#"+name, "."+name.substr(1));
            if (form.find("[name='" + name + "']").length) {
                matches.push(form.find("[name='" + name + "']"));
            } else if (form.find("[name='custom_" + name + "']").length) {
                matches.push(form.find("[name='custom_" + name + "']"));
            }
            // must not have [] in field id
            else if (form.find("#" + nosquarename).length) {
                matches.push(form.find("#" + nosquarename));
            }
            // must not have [] in field class name
            else if (form.find("." + nosquarename.substr(1)).length) {
                matches.push(form.find("." + nosquarename.substr(1)));
            }
            // names that start with the correct checkbox pattern
            else if (form.find("[name^='" + checkboxname + "']").length) {
                form.find("[name^='" + checkboxname + "']").each(function (idx, ckbx) {
                    matches.push(jQuery(ckbx));
                });
            }
            // find other custom field elements (could be radio boxes so traverse the array)
            else if (form.find("[name='" + noncustomname + "']").length) {
                form.find("[name='" + noncustomname + "']").each(function (idx, fld) {
                    matches.push(jQuery(fld));
                });
                //matches.push(form.find("[name='" + noncustomname + "']"));
            }

            if (matches.length == 1) {
                value = matches[0].val();
                if (typeof value == "undefined" || value == null) {
                    value = "";
                }
            }
            // A set of radio checkboxes
            else if (matches.length > 1) {
                matches.forEach(function (match, index) {
                    // match can be a DOM input element (not jQuery)
                    if (jQuery(match).attr('checked'))
                        value = jQuery(match).val();
                });
            }
            //if (elem) elem.value = item.value;
            if (value == item['default'] || value == "") {
                valid = false;
                // TODO add message together
                if (item.reqmsg != "") {
                    messages.push(item.reqmsg);
                }
            }
        });
        if (!valid) {
            message = "";
            messages.forEach(function (msg, index) {
                message += msg + "\n";
            });
            alert(message);
        }
        return valid;
    }
}

Copyright © 2019 by b0y-101