• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テンキーで「0.1」を打つと「.1」になる)

テンキーで「0.1」を打つと「.1」になる

このQ&Aのポイント
  • テンキーで「0.1」を打つと「.1」になってしまいます。「0.1」になる方法を教えて下さい。
  • HTMLページにテンキーを打つと数字が出るといったものをしたくて、検索しましたところ、参考サイトを見つけました。参考サイトのソースコードから、「0.1」とテンキーを打っても「.1」と表示される方法を知りたいです。
  • テンキーを使ってHTMLページに数字を入力したいのですが、テンキーで「0.1」を入力すると「.1」になってしまいます。どのようにすれば正しく表示されるようになるのでしょうか。

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

  • ベストアンサー
  • asciiz
  • ベストアンサー率70% (6803/9674)
回答No.1

んー、先頭0が消えてしまう原因は、ここですね。 >function keyEvent(c) { >t.value = (t.value=='0')? c: t.value+c; >} 上記のハテナコロン演算子を普通にif文で書けば、こちらと同値となります。 if (t.value=='0') {t.value=c;} else {t.value=t.value+c;}; 現在入ってる文字が'0'のみであれば、置換する。そうでなければ、追加する。 これにより、「0012」と打っても「12」だけ出るようになっています。 同じ理屈で、「0.12」と打っても「.12」が残るというわけです。 この短い式で、先頭0を自動的に消す処理が入ってるんです。 なので、単純に解決するには、 >function keyEvent(c) { >t.value = t.value+c; >} としてしまえばいい。 0の時の上書きがなくなって、「0012」も「0.12」も、ついでに書くと、 「0000.12」とも入力できます。 でも↑これは「.12」より格好悪いのではないでしょうか? 数値的には、「0.12」も「.12」も0.12ですから、のちの処理に違いは生じないでしょう。 そのままで良い気がします。 まあもう一歩進めるとすると、 「『.』の時は無条件に加える。その他は今まで通り」 と考えると、次の式にもできます。 >function keyEvent(c) { >t.value = (c!='.' & t.value=='0')? c: t.value+c; >} これなら、「0000.12」と入力しても「0.12」だけ残ります。 でも他のボタンを足した時にここをどうするかまた考えないといけなさそうですね。 条件があまりに複雑になるようであれば普通にif文に展開しましょう。

nkmyr
質問者

お礼

細かな説明をありがとうございます。 おかげさまでできました。