if (typeof(Jubei) == 'undefined') {
Jb = {};
}
Jb.Form = {
/**
* 
*/
check : function(form){
var titles = []; // 
var emptyCount = 0;
var lastName = ''; // Last element name
var reg = new RegExp(/required(\d*)/);
for ( var i = 0, length = form.elements.length ; i < length ; i++) {
var el = form.elements[i];
// if the element name is same to last one
if (el.name == lastName) {
continue;
}
var result = reg.exec(el.className);
// If class attr has no 'required' phase
if (result == null) {
continue;
}
var minRequired = (result.length == 2 && result[1].length > 0 ? result[1] : 1);
lastName = el.name;
var elType = el.type.toLowerCase()
// text, textarea, password: If the value length is zero.
// checkbox, radio: 
// select, select-multiple: 
if ((elType == 'text' || elType == 'textarea' || elType == 'password') && el.value.length == 0
|| (elType == 'checkbox' || elType == 'radio') && this.isUnchecked(form, el.name, minRequired)
|| (elType == 'select' || elType == 'select-multiple') && this.isUnselected(el, minRequired)) {
if (el.title && el.title.length > 0) {
// If title attribute exists
titles[titles.length] = el.title;
}
// try to show a message.
this.showError(el.name, true);
emptyCount++;
} else {
this.showError(el.name, false);
}
}
if (emptyCount == 0) {
return true;
} else {
alert('必須項目を入力してください\n\n' + titles.join("\n"));
return false;
}
},
/**
* 
*/
isUnchecked : function(form, radioName, minRequired){
var chkCount = 0;
for (var i = 0, length = form.elements.length ; i < length ; i++) {
var el = form.elements[i];
if (el.name == radioName && el.checked) {
chkCount++;
}
}
return (chkCount <  minRequired);
},
/**
* 
*/
isUnselected : function(select, minRequired){
var slCount = 0;
for (var i = 0, length = select.options.length ; i < length ; i++) {
var opt = select.options[i];
if (opt.selected) {
slCount++;
}
}
return (slCount < minRequired);
},
/**
* Show an error message
*/
showError : function(elName, visible){
var block = document.getElementById('err-' + elName);
if (block == null && elName.match(/\[\]$/)) {
block = document.getElementById('err-' + elName.replace(/\[\]$/, ''));
}
if (block != null) {
block.style.display = (visible ? 'block' : 'none');
}
}
}
