2012年04月22日

JavaScript の parseInt で 08 と 09 が・・・

ユーザに西暦、月、日を入力してもらうフォームを作っていて、入力された値を JavaScript で
var $month = $form.find("input[name='month']");
var month = parseInt($month.val());
if (month > 12 || month < 1) {
   alert($month.attr('title') + "が不正です");
   return false;
}
という風に値のチェックをしていたのですが、08 や 09 と入力された場合、「不正です」のエラーが出るという問題が発生しました。
調べてみると、08 や 09 が入力された場合、parseInt() で 0 が戻っていました。

parseInt() を調べてみると、
  • 0から始まる場合は8進数
  • 0xから始まる場合は16進数
とみなすというのが仕様でした。
したがって、08 や 09 は 8進数とみなされますが、8進数は07までなので 8 や 9 は削除されて 0 とされたということなのでしょう。

対処方法は、
var month = parseInt($month.val(), 10);
という風に10進数であることを parseInt() で明示するということでした。

posted by おちエン at 19:44| Comment(0) | 開発 | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。