2018年8月17日 (金)

htmlspecialchars(別版)

var htmlspecialchars = function(s) {
  var e = document.createElement('span');
  e.textContent = s;
  return e.innerHTML
    .replace(/"/g, '"')
    .replace(/'/g, ''');
};

var htmlspecialchars_decode = function(s) {
  var e = document.createElement('span');
  e.innerHTML = s;
  return e.textContent;
};

| | コメント (0)

2018年8月 2日 (木)

数値選択

jQuery(function($) {
  $.fn.setNumOptions = function(from_val, to_val, val) {
    var s = '(選択してください)';
    this.each(function() {
      if (this.nodeName === 'SELECT') {
        $(this).empty()
          .append('<option value="">' + s + '</option>');
        for (var i = from_val; i <= to_val; i++) {
          $(this).append(
            '<option value="' + i + '"' +
            (val != null && val === i ? ' selected' : '') +
            '>' + i + '</option>'
          );
        }
      }
    });
  };
  /* usage example */
  $('select#s1').setNumOptions(1, 12, 8);
});

| | コメント (0)

2018年7月26日 (木)

都道府県選択

jQuery(function($) {
  $.fn.setOptions = function(arr, val) {
    this.each(function() {
      if (this.nodeName === 'SELECT') {
        $(this).empty();
        for (var i = 0, len = arr.length; i < len; i++) {
          var v = (i == 0 ? '' : arr[i]); 
          $(this).append(
            '<option value="' + v + '"' +
            (val != null && val === v ? ' selected' : '') +
            '>' + arr[i] + '</option>'
          );
        }
      }
    });
  };
  var prefs = [
    '(選択してください)',
    '北海道','青森県','岩手県','宮城県','秋田県',
    '山形県','福島県','茨城県','栃木県','群馬県',
    '埼玉県','千葉県','東京都','神奈川県','新潟県',
    '富山県','石川県','福井県','山梨県','長野県',
    '岐阜県','静岡県','愛知県','三重県','滋賀県',
    '京都府','大阪府','兵庫県','奈良県','和歌山県',
    '鳥取県','島根県','岡山県','広島県','山口県',
    '徳島県','香川県','愛媛県','高知県','福岡県',
    '佐賀県','長崎県','熊本県','大分県','宮崎県',
    '鹿児島県','沖縄県'
  ];
  /* usage example */
  $('select#s1').setOptions(prefs, '石川県');
});

| | コメント (0)

2018年6月 8日 (金)

多次元配列のコピー

if (!Array.isArray) {
  Array.isArray = function(arg) {
    return Object.prototype.toString
      .call(arg) === '[object Array]';
  };
}

if (!clone) {
  var clone = function(arr) {
    if (!(arr instanceof Object)) return arr;
    var r = Array.isArray(arr) ? [] : {};
    for (var i in arr) r[i] = clone(arr[i]);
    return r;
  };
}

if (!Array.prototype.clone) {
  Array.prototype.clone = function() {
    return clone(this);
  };
}

| | コメント (0)

2018年5月10日 (木)

メールの照合(HTML5)

jQuery(function($) {
  var _check = function($mails) {
    var v0 = $mails.get(0).value;
    var v1 = $mails.get(1).value;
    if (v0 != '' && v1 != '' && v0 != v1) {
      $mails.get(1).setCustomValidity('メールアドレスが一致しません。');
    } else {
      $mails.get(1).setCustomValidity('');
    }
  };
  var _match = function($mails) {
    $mails.on('input', function() { _check($mails); });
    $(window).load(function() { _check($mails); });
  };
  _match($('[name="mail1"],[name="mail2"]'));
});

| | コメント (0)

«経過時間計測用