You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openpower.foundation/themes/openpowerfoundation/assets/js/form.js

103 lines
2.5 KiB
JavaScript

jQuery(document).ready(function($) {
"use strict";
$(formname).submit(function() {
var f = $(this).find('.form-group'),
ferror = false,
emailExp = /^[^\s()<>@,;:\/]+@\w[\w\.-]+\.[a-z]{2,}$/i;
f.children('input').each(function() {
var i = $(this);
var rule = i.attr('data-rule');
if (rule !== undefined) {
var ierror = false;
var pos = rule.indexOf(':', 0);
if (pos >= 0) {
var exp = rule.substr(pos + 1, rule.length);
rule = rule.substr(0, pos);
} else {
rule = rule.substr(pos + 1, rule.length);
}
switch (rule) {
case 'required':
if (i.val() === '') {
ferror = ierror = true;
}
break;
case 'minlen':
if (i.val().length < parseInt(exp)) {
ferror = ierror = true;
}
break;
case 'email':
if (!emailExp.test(i.val())) {
ferror = ierror = true;
}
break;
case 'checked':
if (!i.attr('checked')) {
ferror = ierror = true;
}
break;
case 'regexp':
exp = new RegExp(exp);
if (!exp.test(i.val())) {
ferror = ierror = true;
}
break;
}
i.next('.validation').html((ierror ? (i.attr('data-msg') !== undefined ? i.attr('data-msg') : 'wrong Input') : '')).show('blind');
}
});
f.children('textarea').each(function() {
var i = $(this);
var rule = i.attr('data-rule');
if (rule !== undefined) {
var ierror = false;
var pos = rule.indexOf(':', 0);
if (pos >= 0) {
var exp = rule.substr(pos + 1, rule.length);
rule = rule.substr(0, pos);
} else {
rule = rule.substr(pos + 1, rule.length);
}
switch (rule) {
case 'required':
if (i.val() === '') {
ferror = ierror = true;
}
break;
case 'minlen':
if (i.val().length < parseInt(exp)) {
ferror = ierror = true;
}
break;
}
i.next('.validation').html((ierror ? (i.attr('data-msg') != undefined ? i.attr('data-msg') : 'wrong Input') : '')).show('blind');
}
});
if (ferror) {
return false;
} else {
var str = $(this).serialize();
$.ajax({
type: "POST",
data: str,
url: submiturl,
complete: function() {
$("#sendmessage").addClass("show");
$("#errormessage").removeClass("show");
$(formname)[0].reset();
$('input[type="text"],textarea').val('');
if(typeof goal !== 'undefined') {
_paq.push(['trackGoal', goal]);
}
$('#sendmessage').show();
setTimeout(function() {
$('#sendmessage').fadeOut();
}, 2500);
}
});
return false;
}
});
});