![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
首記の件、ご教示お願いします。
郵便番号を記述するテキストボックスに、桁数が間違っていた場合や間のハイフンが入っていなかった場合は、’桁数が違います'や'-が抜けています’などのアラートが出る様にしたいです。
下記のコードが作成中の物です。
(長いので一部抜粋にします)
HTML:
<form action="top.html" method="POST" id="form">
<div class="areas">
<div class="columns">郵便番号</div>
<div class="rows"><input type="text" name="sample" class="input-text6"><br>(例:123-4567)<br><span class="red">半角</span>でお願いします。</div>
</div>
</form>
______________________________________________________________________
JavaScript:
document.getElementById('form').onsubmit = function() {
let textValue6 = document.querySelector('.input-text6').value;
if(textValue6.match(/[^0-9a-zA-Z-]+/)) {
window.alert('半角英数字で入力してください');
return false;
}
};
半角英数字で入力されてない場合はエラーが出る様にはしたのですが、
・桁数を間違って入力した場合(前半3桁ー後半4桁)
・ハイフンが入ってない場合
上記2つを組み込むにはどの様なコードを記述すればいいのでしょうか?
宜しくお願いします。
No.4
- 回答日時:
No3です。
>trueの部分(123-4567)でテキストボックスに入力したらアラートが出ました。
>それ以外は出ませんでした。
>上記のfalseが出た時にアラートが表示される様にしたいです。
あいかわらず、どのように試しておられるのか不明ですが、それって単純に判定を逆になさっているだけではないのですか??
関数の戻り値を逆にするか、判定条件を逆にすればよいだけのように思われます。
>・「1234567」と入力された場合
>アラート「ハイフンが入力されていません」と表示させたい
>・「12-4567」or「137-78998」と入力した場合
>アラート「桁数が違います」と表示させたい
No3でも書きましたように、No2の回答はまとめて全部をチェックするものです。
それで十分とは思いますが、個別の項目をそれぞれにチェックしたいのであれば、項目ごとにチェックを掛ければ良いでしょう。
※ 以下の例で、不要なチェックをはずしても、そのままで動作するはずと思います。
<!DOCTYPE HTML>
<html lang="ja">
<head><title>Sample</title>
<script type="text/javascript">
window.addEventListener('DOMContentLoaded', function(){
document.querySelector('input[name="hoge"]').addEventListener('change', function(){
let r = [], s = this.value;
let err = [
'文字数が違います',
'「半角数字、ハイフン」以外の文字は使えません',
'ハイフンがありません',
'数字の桁数が違います'
];
// 文字数チェック
if(s.length != 8){ r.push(err[0]); }
// 文字種類チェック
if(!/^[-\d]+$/.test(s)){ r.push(err[1]); }
// ハイフンチェック
if(s.indexOf('-')<0){ r.push(err[2]); }
// 桁数チェック
if(!/^\d{3}.\d{4}$/.test(s)){ r.push(err[3]); }
if(r.length){ alert(r.join('\n')); }
else{ alert('OKです!'); }
});
});
</script>
</head>
<body>
<input name="hoge" type="text" />
</body>
</html>
無事できました。
重ね重ねありがとうございます。
NO,4の投稿方法でできました。
ベストアンサーだとコメントがかけないので
後日、必ずベストアンサーとさせて頂きます。
ちなみにできないといっていた検証の仕方は、
HTML;
<form action="top.html" method="POST" id="form">
<div class="question-form">
<div class="areas">
<div class="columns">郵便番号</div>
<div class="rows"><input type="text" name="sample" class="input-text6"><br>(例:123-4567)<br><span class="red">半角</span>でお願いします。</div>
<div class="rows-submit"><input type="submit" name="sample" value="送信" class="input-text"></div>
</div>
JavaScript;
document.getElementById('form').onsubmit = function() {
let textValue6 = document.querySelector('.input-text6').value;
if(textValue6.match(/^\d{3}-\d{4}$/)) {
window.alert('入力が違います');
return false;
}
};
上記にてテキストボックスを入力したらtrueの時(123-4567)しかアラートが出ないと悩んでました。
未だにこの逆をどうやればいいかわかりませんがw
先に検証方法をお見せすれば良かったですね。
まだわかっていないのでお手数をお掛けしました。
ご迷惑をおかけしましたが、また何かありましたらお力添えして頂ければ幸いです。
No.3
- 回答日時:
No2です。
>~~~となりました。
どのような方法でチェックしているのかわかりませんが、以下のようになるはずですけれど?(補足で提示の結果とは異なります)
const Test = str => /^\d{3}-\d{4}$/.test(str);
alert( Test("てすと") ); // false
alert( Test("1234567") ); // false
alert( Test("12-4567") ); // false
alert( Test("123-4567") ); // true
>「ハイフンが入力されていません」と表示させたい
>桁数が違います」と表示させたい
No2の例ではまとめて全部をチェックしていますので、それぞれをチェックしたければ
・ハイフンの存在チェック
・数値の桁数チェック
の二回に分けてチェックすれば良いでしょう。
まぁ、まとめてしまって
/^(\d+)-(\d+)$/
でチェックして、
false なら「半角数字-以外の文字を含んでいるか、-が無いか」
true なら 結果の部分マッチの文字数が3、4でなければ「桁数違い」
として判断してしまうとかもあるかも知れません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- Visual Basic(VBA) Selenium Basicの件 5 2023/04/10 20:55
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
onClickとsubmitの処理順序
-
javascriptで入力禁止文字をチ...
-
dijit.form.ComboBoxについて
-
イベント発生時に入力待ち状態...
-
テキストボックスを無効にする...
-
AjaxのWYSIWYGエディタ
-
return trueとreturn falseの用...
-
プルダウン選択を変更すると、...
-
slickのレスポンシブ > center...
-
FormのonsubmitでJavaスクリプ...
-
onchangeイベントを強制的に発...
-
submitがおされた同時に JavaSc...
-
select要素のvalueを配列で取得...
-
Selectボックスの幅を自動で広...
-
HTMLファイル同士での値渡し
-
ラジオボタンの値でリンク先を...
-
ラジオボタンとプルダウンを連...
-
Selectの中身をfor文で入れる
-
JQuery selectが反映されない
-
確認ページからフォームページ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
onClickとsubmitの処理順序
-
JSPとJavaScriptの連携について...
-
ラジオボタンによるフォームの...
-
テキストボックス入力を半角英...
-
onChange()メソッド
-
フォームから入力すると、入力...
-
テキストボックスを無効にする...
-
フォームの値が0だったら空白...
-
文末の改行コードを削除したい
-
キーボードの数字のキーだけを...
-
テキストボックスのグレーアウト
-
javaでフォーム入力の確認と文...
-
フィールドを有効(enabled?)に...
-
JavaScript のプログラム質問で...
-
Javascript 郵便番号の入力欄で...
-
イベント発生時に入力待ち状態...
-
フォームのテキストをリンク化...
-
貼り付けイベントで値を取得したい
-
メールフォームの入力確認用Jav...
-
dijit.form.ComboBoxについて
おすすめ情報
回答ありがとうございます。
教えて頂いたコードで再度行ってみました。
テキストボックスに、
・「てすと」と入力
アラート「半角英数字で入力してください」と表示される
・「1234567」と入力
アラート表示なし
・「12-4567」と入力
アラート表示なし
となりました。
_____________________________________________________________________
イメージとしては、
・「1234567」と入力された場合
アラート「ハイフンが入力されていません」と表示させたい
・「12-4567」or「137-78998」と入力した場合
アラート「桁数が違います」と表示させたい
わかりづらく申し訳ございません。
宜しくお願いします。
再度の回答ありがとうございます。
const Test = str => /^\d{3}-\d{4}$/.test(str);
alert( Test("てすと") ); // false
alert( Test("1234567") ); // false
alert( Test("12-4567") ); // false
alert( Test("123-4567") ); // true
確認してみましたが、trueの部分(123-4567)でテキストボックスに入力したらアラートが出ました。
それ以外は出ませんでした。
上記のfalseが出た時にアラートが表示される様にしたいです。
正しい郵便番号を入力したときにアラートが出るのではなく、それ以外の間違った入力をしたときにアラートが出る様にしたいです。
言葉が足りずに申し訳ございませんでした。