- ベストアンサー
フォームの入力内容に文字を追加できる方法
- KENTWEBのClipMailを使用してフォームメールを作成していますが、郵便番号の入力形式を変更したい場合について質問です。
- 現在は<input name="zip" type="text">-<input name="zip" type="text">という形式で受け取ることができますが、"000-0000"の形式で受け取りたいと思っています。
- 一つの解決方法として、ユーザーにハイフンを入力してもらう方法がありますが、他にも間に任意の文字を挿入する方法があるか教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
お使いのスクリプトでは、質問者さんの例から、同じname属性の場合、単純に連結しているように思えます。 そこで、間にvalueが ”-” のhidden属性を入れてみるのはいかがでしょうか? 所望の結果は得られますでしょうか? 数値入力制限というJavaScriptもおまけで付けてみました^^ <script type="text/javascript"> function check_zip(zip_input, digits) { var code = zip_input.value; var len = code.length; if ( !code.charAt(len - 1).match(/^\d$/) || len > digits ) { code = zip_input.value = code.substr(0, len - 1); } if ( digits == 3 && code.length == 3 ) { document.getElementsByName("zip")[2].focus(); } } </script> <input name="zip" type="text" onkeyup="check_zip(this, 3)"><input type="hidden" name="zip" value="-">-<input name="zip" type="text" onkeyup="check_zip(this, 4)">
その他の回答 (2)
- ryu_chan
- ベストアンサー率37% (69/186)
ハイフンの前後に半角スペースが入るとのことですが、これはそのスクリプトの実装がそうしているからだと思います。 スクリプトの中身を少し見てみましたが、おそらく以下の部分を変更すればいいのではないかと思います。 lib/preview.plの111行目の $in{$key} =~ s/\0/ /g; ↓ ↓ $in{$key} =~ s/\0//g; に変更。
お礼
再度のご回答をありがとうございます。 お礼が遅くなり、申し訳ありません。 考えていただいた方法ではうまくいかなかったのですが、lib/preview.plの空白をひとつずつ削っていってみようと思います。 今回は本当にありがとうございました!
- ORUKA1951
- ベストアンサー率45% (5062/11036)
nameは同じものを使うと、処理方法にもよりますが上書きされたり連結したりします。 通常は、7桁をそのまま入力してもらって、3桁と4桁に分けるほうがよいでしょう。
お礼
回答ありがとうございます。 7桁のものを分けるということもできるのですね! 今回は別の方法を採用しましたが、次の機会に調べたいと思います。 ありがとうございました。
お礼
回答ありがとうございます。 無事にひとつにつなげることができました。 javascriptもありがとうございます。使わせていただきます。 それでご厚意に甘えて、もうひとつ教えていただけませんでしょうか。 上記方法で入力した場合、結果が「000 - 0000」とハイホンの左右に半角スペースが空いてしまいます。 できればこちらをとりたいのですが、可能でしょうか。 もしご存知でしたら教えてください。 よろしくお願いします!