/**
* (共通) テキスト・テキストエリアのヴァリデーションを行います
*/
var validate_textarea = {
config : {
textarea_max_rows : 8, // テキストエリア スクロール表示行数
red_last_text_num : 5, // 残り文字数を警告する文字数
empty_area_message : 'が入力されていません。',
over_area_message : 'の入力文字数がオーバーしています。',
attention_mark : ' ',
},
/**
* テキストのヴァリデートcheckを行います
* テキストが空の場合 or 指定された文字数を超えている場合:falseを返却します
* テキストに文字がある場合、trueを返却します
* @param string text文字列
* @param int max文字数
* @return boolean
*/
isValidText:function(text, max_length) {
if (text === "" || text.length > max_length) {
return false;
}
return true;
},
/**
* テキストのヴァリデートcheckを行い、エラーメッセージの表示・非表示を行います
* テキストが空の場合 or 指定された文字数を超えている場合:指定されたエリアに、指定されたエラーメッセージを表示して、falseを返却します。
* テキストに文字がある場合、エラーメッセージエリアをクリアにして、trueを返却します
* @param string text文字列
* @param int max文字数
* @param string error_idname エラーメッセージエリアの識別子
* @param string error_name エラーの内容名称
* @return boolean
*/
set_attention_isValidText : function (text, max_length, error_idname, error_name) {
if (text === "") {
$(error_idname).html(validate_textarea.config.attention_mark + error_name + validate_textarea.config.empty_area_message);
$(error_idname).show();
return false;
}
if (text.length > max_length) {
$(error_idname).html(validate_textarea.config.attention_mark + error_name + validate_textarea.config.over_area_message);
$(error_idname).show();
return false;
}
$(error_idname).hide();
return true;
},
/**
* テキストの文字数チェックを行い、max文字数からの残り文字数を、指定されたエリアに設定します
* max文字数-テキストの文字数が5文字になった場合、赤文字を設定
* max文字数をオーバーした場合は、オーバーした文字数を赤文字で設定
* @param max_length int max文字数
* @param get_textarea_id string テキストエリアの識別子
* @param set_countarea_id string テキストの文字数を設定する識別子
*/
textNumCount:function(max_length, get_textarea_id, set_countarea_id) {
// textの値を取得
var text = validate_textarea.return_get_specified_value(get_textarea_id); // ie8対応 placeholdeを考慮した、value値を返却
textarea_length = text.length;
// 残り文字数 = max文字数-現在の文字数
var last_text_num = max_length - textarea_length;
// 残り5文字なると、赤文字テキストを設定
if (last_text_num > validate_textarea.config.red_last_text_num) {
$(set_countarea_id).html("あと" + last_text_num + "文字");
} else {
if (last_text_num >= 0) {
$(set_countarea_id).html("あと" + last_text_num + "文字");
} else {
$(set_countarea_id).html("" + Math.abs(last_text_num) + "文字オーバーしています");
}
}
},
/**
* テキストエリアの入力値を取得します
* ただし、入力値がplaceholder要素の値に等しい場合は空と見なします
* IE8でplaceholderを擬似的に再現する際に入力値を使っているためです
*
* @param string get_textarea_id テキストエリアの識別子
* @return string テキストエリアから取得した文字
*/
return_get_specified_value : function (get_textarea_id) {
// ie8対応(placeholderが、valueと同じ内容になる)
if ($(get_textarea_id).attr('placeholder') == $(get_textarea_id).val()) {
return "";
} else {
return $(get_textarea_id).val();
}
},
/**
* 入力エリアについて、いずれかのエリアに入力があるかを判定する
*
* @param string selector 入力エリアを示すセレクタ
* @return boolean いずれかのテキストエリアに入力がある場合true
*/
value_exists: function(selector) {
var input_exists = false;
$(selector).each(function() {
if (validate_textarea.return_get_specified_value(this) !== '') {
input_exists = true;
return false;
}
});
return input_exists;
}
};