• ベストアンサー

parseIntでうまく値がとれない

初歩的な質問になってしまうかもしれませんがよろしくおねがいします。 日付が正しく入っているか確認するようにしたいのですがうまくいきません。 正しく入っているか確認する関数はもう用意してあります。 ※jsIsDate(yyyy,mm,dd)というのがその関数です。  引数に年 月 日をいれるものになります。 そこで私は「2003/09/12」という形でテキストボックスに入力されたデータから、 「2003」「9」「12」という値を取得して、 上のjsIsDate関数の引数に入れようと思いました。 しかし、2003と12はうまく入ったのですが、月の「09」が「9」ではなく「0」と取れてしまうのです。 parseIntの使い方が間違っているのでしょうか? そもそも値の取得の仕方が間違ってるのでしょうか? なにかヒントをいただけるとうれしいです。 よろしくおねがいします。 dt = form1.txtOpenday.value.split("/"); if(!jsIsDate(parseInt(dt[0]),parseInt(dt[1]),parseInt(dt[2]))){  alert("存在しない日付が入力されています。");  form1.txtOpenday.focus();  return; } txtOpenday...テキストボックスの名前です。

質問者が選んだベストアンサー

  • ベストアンサー
noname#199778
noname#199778
回答No.3

parseInt()関数を使うのであれば、先の回答にあるように「parseInt(dt[x],10)」という形で10進数として変換する必要があると思います。 parseInt()関数で第二引数を指定しない場合、値の先頭に0がくると8進数として、値の先頭に0xがくると16進数として変換を行うので、「09」では9が8進数では数値として存在しないために文字列として判断され、0のみが返されているのではないでしょうか。 他に渡す値を数値型化する方法としては、Number()関数で「Number(dt[x])」という形にする方法も取れると思いますし、もっと簡単に「dt[x]-0」という記述で数値として扱わせることも可能と思います(0を減算してやることで型を数値として扱うようにしています)。 これらの方法を取るのがよいのではないでしょうか。 参考になれば。

yurikoxxxx
質問者

お礼

早速のご回答ありがとうございます。 「parseInt(dt[x],10)」という形で入力しなおしたところ、無事処理ができるようになりました。 (やっぱり8進数で取得しようとしてたんですね。) Number()関数も機会があれば使ってみたいと思います。 みなさんのお陰です。本当にありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • Y_eRu
  • ベストアンサー率32% (33/101)
回答No.2

こんにちわ(o^-^o) たぶん10進数に直さないといけないのではないかと思うので parseInt(dt[0])これを parseInt(dt[0],10) ↑このようにしてみたらどぉでしょうか? 見当違いだったらすみません 失礼しましたm(_ _)m

yurikoxxxx
質問者

お礼

早速のご回答ありがとうございます。 「parseInt(dt[x],10)」という形で入力しなおしたところ、無事処理ができるようになりました。 (やっぱり8進数で取得しようとしてたんですね。) みなさんのお陰です。本当にありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。
  • itomizu
  • ベストアンサー率47% (8/17)
回答No.1

なぜ0になるかはちょっとわかりませんが、 parseIntでは0で始まる数値は8進数と判断するようです。 ですから先頭が0の文字列に対して substring(1)等で0を省く処理をしてみてはどうでしょう? 月だけでなく日もその処理が必要です。

yurikoxxxx
質問者

お礼

早速のご回答ありがとうございます。 「parseInt(dt[x],10)」という形で入力しなおしたところ、無事処理ができるようになりました。 (やっぱり8進数で取得しようとしてたんですね。) みなさんのお陰です。本当にありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 日付入力

    テキストボックスにYYYY/MM/DDの形式で入力します。 入力中に、YYYYが入力されたら自動的にスラッシュを付け加えて、またMMと入力したらスラッシュが自動的に入るようにしたいです。その過程で、日付のチェックも同時に行ないたいです。 どう書けばよいのでしょうか。ぜひ教えてください。お願いします。

  • ラジオボタンの値を取得する引数付き関数を作りたい

    フォームの入力内容をチェックするJAVASCRIPTの関数を作成していますが、ラジオボタンのValueを取得することができません。 引数指定の関数を作成して汎用的に使用したいと考えているのですが、引数を渡すと値を返してくれません。 引数の渡し方がおかしいのでしょうか? function getRadioValue(str){ // 値を取得する関数 var check, num, value="none"; num=document.form1.str.length; for (i=0;i<num;i++) { check=document.form1.str[i].checked; if (check) value=document.form1.str[i].value; } return value; } function check(){ // 入力内容をチェックする if (getRadioValue("タイプ") == "A"){ hogehoge } : : }

  • 動的配列に値を返す関数

    Split関数のように動的配列に値を返す関数を作成しようとしているのですが、 作り方が全くわからず途方に暮れています。 Function 関数名()(引数1,引数2) などと関数名の後に()を付けたりしてみたのですが、 コーディング時にエラーとなってしまいます。 何か良い方法はないでしょうか?

  • セルの値を1桁ずつ、テキストボックスへ

    幾つかの値が入力されたセルから1桁ずつ取り出して、テキストボックスへバラバラに表示させたいのですが・・・よろしくお願いします。 例えば1234567等の7桁の値が入力されたセルがあって、それを指定したテキストボックスへ1、2、3、4、5、6、7と7つのテキストボックスへ表示させたいのです。 セルからセルだったらMID(A1,1,1)で“1”を取得できますが、これをテキストボックスで取得したいのです。 事前にセルで取得してテキストボックスとリンクさせていたのですが、元のデータが変わるたびにやり直さないといけないので、テキストボックスから直接取得させたいのですが、何か良い方法がありましたら宜しくお願いします。

  • テキストボックスを無効にすると値が取得できない

    javascriptでこのようにテキストボックスを無効に してフォームを送信するとphp側でvalueの値が取得できないのですが、入力無効にすると valueは送られないんでしょうか? <form> <input type="text" id="sample" name="sample" value="値" /> </form> スクリプト .document.getElementById('sample').disabled = true; valueにはphpで値をセットし、それをテキストボックスで編集できないようにして 値を飛ばそうとしたのですがテキストボックスのvalueの値が来てないようです。 自分なりに考えたんですが、送信する瞬間だけ(submitボタンが押された時) テキストボックスを有効に戻すようにコードを書いているのですが これ以外で何かありますか? ---このように対処--- <form onsubmit="return disb()"> <input type="text" name="sample" value="値" /> </form> スクリプト document.getElementById('sample').disabled = true; function disb(f){ f.sample.disabled = false; }

  • C#でテキストボックスをクリック→フォームが開く→フォームで設定した値

    C#でテキストボックスをクリック→フォームが開く→フォームで設定した値を元のテキストボックスに入力 こんな感じのことをC#でやりたいのですがよくわからないので教えてください。 1. 親をForm1、子をForm2とします 2. Form1のTextBox1をクリックするとForm2が開いきます 3. Form2で設定した値をForm2の「入力」ボタンを押すとForm2が閉じてTextBox1に値が入力されます というものです。 ここで、textBoxは「クリックしたコントロール名を取得してForm2に渡したい」のです。 テキストボックスがたくさんあるので、textBox1とか決まった名前ではありません。 この部分がわからないのです。 ------------------------------------------------------- Form1: private void textBox1_Click(object sender, EventArgs e) {  Form2 fromItem = new Form2(sender);  DialogResult deRet = fromItem.ShowDialog(); } Form2: public Form2(object sender) {  InitializeComponent();  object pSender = sender; } private void button_input_Click(object sender, EventArgs e) {  ((System.Windows.Forms.TextBox)pSender).text = "hoge"; } ------------------------------------------------------- この程度しかわかりません。 正しい方法を教えてください。よろしくお願いいたします。

  • 関数呼び出しを制御する関数について

    条件によって異なる関数を呼び出す関数を作成するときに幾つかの疑問を感じました。 例えば、ボタンを入力することによってmake_textbox()という関数(新たなテキストボックスを表示する因数なし戻り値なしの関数)を呼び出したときに、その関数を呼び出す前にグローバル関数の設定を行いたくなって function complex(){    ///新たな関数 x = $('form1'),value; /// グローバル変数の設定($ ← は prototype.jsによる)(form1の値をとる)   make_textbox(); } といったcomplex()関数を作ったのですが、テキストボックスを作ってはくれませんでした。 また、 function make(){ make_textbox(); } といったmake_textboxを呼び出すだけの関数を呼び出してもテキストボックスは生成されませんでした。javascriptは引数を指定することなしにidを指定しさえすれば自由に、入力された値を操作できるので、引数なし戻り値なしの下のような関数を作ってみたのですが、実際これは的確に関数を呼び出せるのでしょうか? function f(){ if($('form1').value == 1){ f(); //例えばf()はテキストボックスに入力された値を配列に入れ替えたりする関数で g(); //g()はその配列で行列地を計算したりなど } h(); } また、もしお時間がございましたら、図々しいようですが下に提示するサンプルソースをご閲覧願います。もしご覧くださるのであれば、300行を超えるhtml&javascriptコード(ひとつ)なのでお時間をとってしまうことになりますから、「スクロールしてみても明らかに間違ってるよ」といえるような箇所をご指摘いただけたらあり難いです。サンプルソースは行列演算に関するもので、.txtファイルをダウンロードする形式になっております。 http://www1.axfc.net/uploader/Sc/so/183286 どうか、以上の私が抱いた疑問を解決して下さればあり難いです。

  • uwsc webページ内のテキストボックス

    みなさんこんばんわ。 uwscを使ってwebページ内の検索などのテキストボックスにカーソルを置きたいのです。 KBDで文字を打ち込めるようにテキストボックスを編集状態にするにはどうすれば教えてください。 具体的には、 私の会社の日報システム(html)で日報を入れる日付テキストボックスがあるのですが、日付のテキストボックスだけvalueで値を入力しても元に戻ってしまうのです。html解析スクリプトで調べると、outerhtmlと書いてあり、何か動的に書き変わるしかけがあるようなのですがよくわかりません。しかたがないのでKBDで日付を入力しています。domというのでしょうか、ie.doc.elements(i).value="yyyy/mm/dd"のようにテキストボックスを指定して直接値を入力できればベストなのですが… よろしくお願いします。

  • 他のformのコントロールの値の取得の仕方

    よろしくお願いします。 開発環境はVb2005です。 Form1のDateTimePicker1に入力された日付をForm2で取得したいのですが、どのように取得するのでしょうか? 参考書を調べたのですが該当がありませんでした。上記のように他のFormのコントロールの値を参照するという方法はあまり一般的ではないのでしょうか?

  • vbsでフォームに値を入力できない

    下記のコードによりファイルパスを入力したいのですが、思ったとおりに動いてくれません(環境はwindowsXP、IE6) set IE=WScript.CreateObject("InternetExplorer.Application") IE.Navigate("http://~") IE.Visible=true IE.document.form(0).file.value="c:\etc.csv" 値を入力しようとしているテキストボックスは、 ファイルパスを入力するテキストボックスで、「ファイルを 選択する」ダイアログボックスを起動するボタンが付属していますが、 パスを直接入力することも可能です。 「IE.document.form(0).file.focus」では問題ないのですが、 「IE.document.form(0).file.value="c:\etc.csv"」ではテキストボックスに値が入力されません。つたない説明で恐縮ですが、解決への ヒントをご教示頂ければ幸いです。よろしくお願いいたします。