if (typeof $.validator !== 'undefined') { $.validator.addMethod("nestedconditionalrequired", function(value, element, params) { var dependantProperty = $('input[name="' + params.propertyName + '"]'); if ((dependantProperty.val() == 'True') && (value == null || value.length <= 0)) { return false; } return true; }); $.validator.unobtrusive.adapters.add('nestedconditionalrequired', ['propertyname'], function(options) { options.rules['nestedconditionalrequired'] = { propertyName: options.params.propertyname }; options.messages['nestedconditionalrequired'] = options.message; }); $.validator.addMethod("nestedmulticonditionalrequired", function(value, element, params) { var needsSecondaryProp = true; var properties = params.properties.split(','); for (var i = 0; i < properties.length; i++) { var dependantProperty = $('input[name="' + properties[i] + '"]'); needsSecondaryProp = needsSecondaryProp && (dependantProperty.val() == 'True'); } if (needsSecondaryProp && (value == null || value.length <= 0)) { return false; } return true; }); $.validator.unobtrusive.adapters.add('nestedmulticonditionalrequired', ['properties'], function(options) { options.rules['nestedmulticonditionalrequired'] = { properties: options.params.properties }; options.messages['nestedmulticonditionalrequired'] = options.message; }); $.validator.addMethod("nullablefileextension", function(value, element, params) { if (value == null || value == '') { return true; } var validExtensions = params.validExtensions.split(','); var fileExtension = '.' + value.split('.').pop(); for (var i = 0; i < validExtensions.length; i++) { if (fileExtension.toLowerCase() == validExtensions[i].toLowerCase()) { return true; } } return false; }); $.validator.unobtrusive.adapters.add('nullablefileextension', ['validextensions'], function(options) { options.rules['nullablefileextension'] = { validExtensions: options.params.validextensions }; options.messages['nullablefileextension'] = options.message; }); $.validator.addMethod("textstringlength", function(value, element, params) { if (element === null || typeof element === 'undefined') { return true; } if ($(element).length > 0) { var elementValueLength = $('').html($(element).val()).text().length; return elementValueLength <= params.maxlength; } return true; }); $.validator.unobtrusive.adapters.add('textstringlength', ['maxlength'], function(options) { options.rules['textstringlength'] = { maxlength: options.params.maxlength }; options.messages['textstringlength'] = options.message; }); }