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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1340閲覧

JavaScriptの処理する箇所の指定が分からない

a-_.

総合スコア133

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2016/08/18 05:07

編集2016/09/06 02:29

フォームの「名前」に「投稿」ボタン押下時、以下条件を満たす場合はエラー(javascript:alert)を表示し、投稿を中止・0文字・10文字以上」
「内容」に「投稿」ボタン押下時、以下条件を満たす場合はエラー(javascript:alert)を表示し、投稿を中止・0文字・300文字以上」
というような条件を加えたいんですが、各処理がどのフォームに実行されるのかというのを下記コードに書いてみたんですが、条件以内の投稿してもアラートが表示されてしまい、どのような処理をすればいいのか分からなくなりました
因みに各処理はPHPで$name = $_POST['name'];・$comment = $_POST['comment'];と定義してあるので$_POSTした値を受け取るという処理も同時に行いたいんです

HTML

1<html> 2 <head> 3 <meta http-equiv="content-type" content="text/html; charset=utf-8"> 4 5 <script type="text/javascript"> 6 function chk($name) { 7 if (1 >= 9) { 8 return true; 9 } else { 10 alert("ERROR"); 11 return false; 12 } 13 } 14 </script> 15 <script type="text/javascript"> 16 function chk($comment) { 17 if (1 >= 299) { 18 return true; 19 } else { 20 alert("ERROR"); 21 return false; 22 } 23 } 24 </script> 25 26 </head> 27 <body> 28 <form method="post" action="" onSubmit="return chk(name, comment)"> 29 <table> 30 <tr> 31 <td> 32 名前:<input type="text" name="name"> 33 内容:<textarea name="comment" cols="30" rows="3"></textarea> 34 <input type="radio" name="bbs" value="post" checked>投稿 35 <input type="radio" name="bbs" value="update">更新 36 <input type="radio" name="bbs" value="delete">削除 37 <input type="submit" value="投稿"> 38 <input type="submit" value="更新"> 39 <input type="submit" value="削除"> 40 </td> 41 </tr> 42 </table> 43 44<?php 45 while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { 46?> 47 48 <table> 49 <input type="checkbox" name="chkid[]" value="<?=$row['id'] ?>"> 50 <tr> 51 <td>名前: 52 <?php echo $row['name'] ?> 53 </td> 54 </tr> 55 <tr> 56 <td>内容: 57 <?php echo $row['comment'] ?> 58 </td> 59 </tr> 60 </table> 61 62<?php 63 } 64 mysqli_free_result($result); 65 66 mysqli_close($link); 67?> 68 69 </form> 70 </body> 71</html>

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

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

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

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

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

guest

回答1

0

ベストアンサー

<form method="post" action="" onSubmit="return chk(name, comment)">

chkに渡してる引数がnameとcommentの2つなのに、

function chk($name) {

受け取る側の引数が1つしかないのがおかしいです。

というか

function chk($comment) {

と、chk関数が2つあるのもおかしいです。

それと

if (1 >= 9) {

if (1 >= 299) {

の部分も、falseにしかならないですよね。

chk関数の引数をnameとcommentの2つにして、
中身でそれぞれの文字の長さを取得して、その長さを判定すればOKです。

投稿2016/08/18 05:20

jm1156

総合スコア866

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

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

a-_.

2016/08/18 05:28

ご回答ありがとうございます >中身でそれぞれの文字の長さを取得して、その長さを判定すればOK どういう意味かもう少し分かりやすく教えていただけますか
a-_.

2016/08/18 06:54

サイトを参考に下記コードに訂正してみましたが、getElementById("");でformとtableタグ内に絞っていこうかと思ったんですが、フォーム以外のコードも混ざってしまって範囲を限定できないです この場合どうすればいいのでしょうか <script type="text/javascript"> function check() { var contents = document.getElementById("form"); for(f=0; f<contents.length; f++) { if ((contents.elements[f].name=="name") && (contents.elements[f].name=="comment") && (contents.elements[f].value=="")) { alert("ERROR"); return false; } } contents.submit(); }
jm1156

2016/08/18 07:04

関数にしたのにgetElementByIdを使うのですか? 引数で渡すのでは? function chk(name,comment) で if (name.length >= 9) { とか if (comment.length >= 299) { でいいと思うのですが。 そもそも比較演算子が逆なきもしますけど…。
a-_.

2016/08/18 07:18

・if (name.length >= 9) { ・if (comment.length >= 299) { の{}内にはalertを書いた方がいいという事ですか あと、比較演算子が逆とはどういう意味でしょうか
jm1156

2016/08/18 07:27

試してないけど、こうかな function chk(name,comment) { if ( 0 < name.length && name.length < 10 && 0 < comment.length && comment.length < 300 ) { return true; } else { alert("ERROR"); return false; } }
a-_.

2016/08/18 07:46

教えていただいたコードで試しましたが、アラート表示されませんでした
attercop

2016/08/18 07:51

こちらも修正が必要かと <form method="post" action="" onSubmit="return chk(this.name.value, this.comment.value)">
jm1156

2016/08/18 07:56

attercopさん ですね。補足ありがとうございます。
a-_.

2016/08/18 08:51

attercopさんご回答ありがとうございます jm1156さんのコードと合わせて改めて実行してみたら一応処理は出来たんですが、削除だけ何故かチェックボックスと削除ボタンにチェックしてsubmitボタン押したら「ERROR」が表示されてしまいます
jm1156

2016/08/18 10:23

このプログラムだと、削除ボタンだろうがなんだろうが、 チェックボックスがどうだろうが関係ないですよ。 nameとcommentの長さしか見てませんから。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問