質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

5回答

6975閲覧

js スペース判定について

Masaru0217

総合スコア10

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/04/15 06:03

編集2020/04/20 03:15

プログラミングを初めて1ヶ月の初心者です。
今、お問い合わせフォームを作ろうとしています。
送信ボタンクリック時に名前の中に全角スペースがなかったら「名前は名字と名前の間に全角スペースを入れてください。」と表示されるようにチェック処理を行いたいです。
matchメソッドを使えばできそうだなと思って調べたのですが、上手く記述できないので、すいません。
アドバイスください。

<!DOCTYPE html> <html lang="ja"> <head> <link rel="stylesheet" href="kadai_base.css"> <title>enrty</title> </head> <body> <p>以下の情報を入力し、送信ボタンを実行してください</p> <form id="messageform"> <table> <tr> <th>お名前:</th> <td><input type="text" name="name" value="" id="name" size="20"></td> <td id="error" style="visibility: hidden;"> 名前を入力してください。</td> <td id ="error2"></td> </tr> <tr> <th>希望年収:</th> <td><input type="text" name="income" size="20"></td> </tr> <tr> <th>生年月日:</th> <td><input type="text" name="birthday" size="20"></td> </tr> <tr> </table> </form> <script> function msg(){ var name = document.getElementById("name"); var error = document.getElementById("error"); if(name.match(/\S/g) else{ "名前は名字と名前の間に全角スペースを入れてください。" } if(name.value == ""){ error.style.visibility = "visible"; } var y = name.value.length; if(y >= 10){ var x = y-10; error2.innerHTML="名前が" + x +"文字オーバーしてます。" } }
</script>
</body> </html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2020/04/15 06:09

(質問文は編集できます)質問文のコードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
guest

回答5

0

アドバイスください。

まずは、「JavaScriptとして解析できる」コードを書いてください。現状のコードでは、文法的に解釈が失敗しています。

ひとまず動くコードを書ければ、デバッグモードで各操作を追跡できるようになります。

投稿2020/04/15 06:16

maisumakun

総合スコア146571

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Masaru0217

2020/04/15 06:29

申し訳ないですが、 どこをどう直せばいいですか?
maisumakun

2020/04/15 06:30

if(name.match(/\S/g) else{ この部分がおかしいです。
Masaru0217

2020/04/15 06:40

if(name.match(!/\S/g); else{ !,;を追加してみました。
maisumakun

2020/04/15 06:42

if(の閉じカッコはどこでしょうか?
Masaru0217

2020/04/15 06:47

ないですね。 if(name.match(!/\S/g)); else{ これでどうです?
maisumakun

2020/04/15 06:49

> これでどうです? ブラウザコンソールに結果が出ているかと思います。
Masaru0217

2020/04/15 06:56

間違ってました Uncaught SyntaxError: Unexpected token ';' (kadai_entry.html:52) onclick @ kadai_entry.html:52 52:<td colspan="2"> <input type="button" onClick="msg()" value="送信"> </td>
guest

0

正規表現の\Sは空白文字「以外」を表します。なので\sが意図としては正しいです。そして\sでは全角スペースはマッチしません。なのでmatch部分を/ /gと全角スペースに置き換えれば動くと思います。

投稿2020/04/15 06:07

A_kirisaki

総合スコア2853

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2020/04/15 06:10 編集

質問者のコードではnameはHTMLElementでは。
A_kirisaki

2020/04/15 06:15

これは失礼しました。早とちりだったようです
guest

0

JavaScript

1function msg() { 2 const name = document.getElementById('name'); 3 if (name.value.indexOf(' ') < 0) { 4 alert('苗字と名前は全角スペースで区切ってください。'); 5 return; 6 } 7 // 続きの処理 8}

こんな感じで

投稿2020/04/15 14:49

tkanda

総合スコア2425

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

とりあえずこんな感じでどうでしょう?

投稿2020/04/15 06:49

yambejp

総合スコア117707

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/04/15 06:50

<style> .hide{display:none} </style> <script> window.addEventListener('DOMContentLoaded', ()=>{ document.querySelector('#name').addEventListener('input',e=>{ var t=e.target; var flg=new RegExp("^"+t.pattern+"$").test(t.value); var err=t.nextElementSibling; err.classList.toggle('hide',flg); }); }); </script> <input type="text" name="name" value="" id="name" size="20" pattern=".+ .+" required><span class="error hide">名前は名字と名前の間に全角スペースを入れてください。</span>
yambejp

2020/04/15 06:52

:invaild擬似クラスやinvalidイベントが用意されていますが 発火タイミングが微妙なのでinputイベントでジャッジしておきました
guest

0

match()で正規表現でも可能かとおもいますが
indexOf()を使う方が簡単に実現できるかなと思います。
indexOf()で文字列を検索する前にtrim()で前後の空白を削る必要がありますが。。

参考
JavaScriptの文字列操作(置換・連結・検索・比較など)を徹底解説!

投稿2020/04/15 06:15

June666

総合スコア290

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問