- 締切済み
テキストボックスを無効にすると値が取得できない
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; }
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 disabledですと入力不可というよりは選択不能となります。 なので送信されることがありません。 よってJavaScriptを利用して送信直前にdisabledを解除する(質問者様の方法) または同じ値を持つhidden要素を持たせてPHP側でそちらの値を受け取る。 または編集されたくないだけであればreadonlyを利用する。 という感じの方法があると思います。
- yambejp
- ベストアンサー率51% (3827/7415)
>入力無効 disabledは入力無効じゃないし・・・ readonlyをつかってみてください
お礼
入力無効状態(readonly)と無効状態(disable)は違うんですね。 違いが分かりました。 ちなみにIEではreadonlyではなく、readOnlyみたいですね。 ありがとうございました。
お礼
無効にするのはdisabledだけと思っていました。 入力無効状態(readonly)と無効状態(disable)は違うんですね。 違いが分かりました。 しかしテキストボックスをreadonlyにするといかにも入力できそうな状態を 提供しちゃいますし、たしかに入力はできませんが、テキストボックスの中で BackSpaceキーを押されるとページが一つ前のページに戻ってしまいますので、 今回はdisabledで無効にしました。 ちなみにIEではreadonlyではなく、readOnlyみたいですね。