Javascriptあれこれ

変数が"undefined"かどうかを確認する

「typeof」を活用する。

var id = $(this).attr('id');
if (typeof id !== "undefined") {
     parameterIndex = id.lastIndexOf('hoge');
}

バリデーションチェック

  • 入力必須
  • 数字もしくはカンマ
  • メールアドレス形式
  • ◯◯日後かどうか
function validateForm(frm) {
    // 必須項目チェック
    for (var i=0; i<frm.length; i++) {
        var value = frm.elements[i].value;
        var type = frm.elements[i].type;
        if ((type == 'text' || type == 'textarea' || type == 'select-one') &&
            value == '') {
      alert('そこは入力必須やで!');
      frm.elements[i].focus();
            return false;
        }
    }
    // 数字もしくはカンマのみ
    if (! frm.任意の要素のid.value.match(/^[0-9,]+$/)) {
        alert('そこは数字かカンマやろ〜!');
        frm.任意の要素のid.focus();
        return false;
    }

    // メールアドレスの形式チェック
    if (! frm.任意の要素のid.value.match(/.+@.+\..+/)) {
        alert('メアドの書き方にしてくれんと、かなわんわ〜!');
        frm.任意の要素のid.focus();
        return false;
    }

    // ◯◯日後かチェック
    var nowDate = new Date();
    var daysAfter = 3;
    var futureDateTime = nowDate.getTime() + daysAfter*24*60*60*1000;
    var requestedDate  = '';
    requestedDate += frm.年の要素のid.value;
    requestedDate += '/';
    requestedDate += frm.月の要素のid.value;
    requestedDate += '/';
    requestedDate += frm.日の要素のid.value;
    requestedDate += ' ';
    requestedDate += frm.時の要素のid.value;
    requestedDate += ':';
    requestedDate += frm.分の要素のid.value;
    requestedDate += ':00';
    alert(requestedDate);
    var requestedDateObj = new Date(requestedDate);
    var requestedDateTime = requestedDateObj.getTime();
    if (futureDateTime > requestedDateTime) {
        alert(daysAfter + '日後を指定してくれやんとあかんわー');
        frm.年の要素のid.focus();
        return false;
    }


}

formオブジェクトを作成してPOST送信する

var hchuno_id = 1976;
var hoge_ids = '4, 29'
var form_action = '/mychuno/send/';
form_action += hchuno_id;
var frm = document.createElement("form");
var ipt = document.createElement("input");
frm.action = form_action;
frm.method = "post";
ipt.name = "hoge_id";
ipt.value =  hoge_ids;
frm.appendChild(ipt);
document.body.appendChild(frm);
frm.submit();