- 締切済み
入力した瞬間に1を引く方法
<input type="text" name="page" size="6"> 上のタグで入力し、下のタグで「表示」をクリックする前に1を引く方法ってないでしょうか? 「51」を入力したら「50」と入力した事にしたいです。 <input type="submit" name="search" value="表示"> よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- fujillin
- ベストアンサー率61% (1594/2576)
回答ではありませんが… ご質問のようにすると、入力した人が自分の入力ミスと間違えて再度入力するという誤解が生じることはありませんか? >「51」を入力したら「50」と入力した事にしたいです。 入力値を利用して何らかの処理をするのだと想像しますが、その処理側で-1してあげれば済むことではないでしょうか。入力欄は入力者が入力したままの値を残しておいたほうが、後で入力値の確認をすることなども含めて便利かと思います。
- yambejp
- ベストアンサー率51% (3827/7415)
アクティブから離れたらでよいのでは? <script> function check(obj){ var num=parseFloat(obj.value); obj.value=(isNaN(num))?"":num-1; } </script> <input type="text" name="page" size="6" onblur="check(this)">
- mikemike7
- ベストアンサー率87% (97/111)
実装とは関係ないのですが、 表示をクリックする前に差し引くと入力した方が混乱しませんか? とりあえず、入力中の時には差し引けないので、 入力フォームからフォーカスが離れた時に作業をすることになると思います。 <script type="text/javascript"><!-- function plusnumber(){ var thisid = document.getElementById('inputval').value; if(thisid.match(/^[0-9]+$/) && thisid > 0){ thisid = thisid - 1; } else{thisid = 0;} document.getElementById('inputval').value = thisid; } --></script> <form> <input type="text" name="page" size="6" onBlur="plusnumber();" id="inputval"> <input type="submit" name="search" value="表示"> </form> 上記で指示を出しているのは onBlur="plusnumber();" です。 フォーム値を抜き出したり、書き込んだりするために、 id="inputval" をつけています。 入力後に、直接「表示」ボタンをクリックすることも考えられるし、 冒頭に書いたように、入力したものが勝手に変わることで混乱する ことも考えられるので、 <form onsubmit="plusnumber();"> <input type="text" name="page" size="6" id="inputval"> <input type="submit" name="search" value="表示"> </form> として、送信する時点で、書き換えるように formに onsubmit="plusnumber();" を追加し、フォームには id="inputval" のみ追加のほうが好ましいのではないかな。と思いますが、 判断は私がすることではないので、このくらいにしておきます。