プロが教える店舗&オフィスのセキュリティ対策術

やりたいことはリストボックスが選択されていない時に、テキストエリアに入力しようとするとメッセージを出すことです。
下記は、未完成の切り貼りです。(全然デタラメかもしれません・・)
助言をいただけると助かります。

<SCRIPT LANGUAGE=javascript>
function alert()
if (document.main.kubun.value = "↓【選択して下さい】"){
alert("先に選択すること。")
}
</SCRIPT>

<FORM NAME="main" ACTION="default.cgi" METHOD="POST">
<SELECT NAME="kubun">
<OPTION SELECTED>↓【選択して下さい】</OPTION>
<OPTION VALUE="東京">東京</OPTION>
<OPTION VALUE="大阪">大阪</OPTION>
</SELECT><BR>
<TEXTAREA NAME="TextArea" ROWS="7" COLS="73" onclick="alert()">

</TEXTAREA>
<INPUT TYPE="SUBMIT" NAME="Submit" VALUE="送信"></form>

A 回答 (4件)

これじゃ、動かないですね~。

(^^;;

JavaScriptのコードの間違いは下記5点です。
1.指定されているSELECTボックスの初期値が「↓【選択して下さい】」になっていません。
2.functionを囲む中カッコがありません。
3.SELECTボックスの選択値は、VALUEではとれません。selectedIndexを使用します。
4.if文の条件は"="ではなく"=="です。
5.alertはJavaScriptの予約語ですので、そのままではfunction名に使用できません。

以下、修正ソースです。

--------------------------------------------
<html>
<head>
<script language="javascript">
function checkalert() {
if (document.main.kubun[document.main.kubun.selectedIndex].value == ""){
window.alert("選択してください。");
}
}
</script>
</head>
<body>
<form name="main">
<SELECT NAME="kubun">
<OPTION VALUE="" SELECTED>↓【選択して下さい】</OPTION>
<OPTION VALUE="東京">東京</OPTION>
<OPTION VALUE="大阪">大阪</OPTION>
</SELECT>
<BR>
<TEXTAREA NAME="TextArea" ROWS="7" COLS="73" onClick="checkalert()">
</TEXTAREA>
</form>
</body>
</html>
----------------------------------------------

JavaScriptの基本をキチンと押さえる事をお薦めします。
    • good
    • 0
この回答へのお礼

皆様回答ありがとうございました。言われてみれば、以前にも指摘された内容もあったりして、基本がわかっていないと痛感いたします。ありがとうございました。

お礼日時:2001/05/07 17:15

No.2の自己フォローです。


s-holmesさんは、テキストエリアに入力しようとするとメッセージが出るようにとお考えですが、これだとテキストエリアをはじめから無視して送信ボタンを押された場合、このチェックの存在も無視されてしまいます。
ですので、「No.2」には私がよく用いる方法を記入してしまいました。
送信ボタンを押したときに、データを送信する前にデータのチェックを行うという方法です。

ちなみに、s-holmesさんのやりたい方法にするとこうなります。

<SCRIPT LANGUAGE="javascript">
function test(){
if (document.main.kubun.options[document.main.kubun.selectedIndex].value==""){
document.main.kubun.focus();
alert("先に選択すること。") ;
return false;
}
}
</SCRIPT>

<FORM NAME="main" METHOD="POST" ACTION="default.cgi">
<SELECT NAME="kubun">
<OPTION SELECTED>↓【選択して下さい】</OPTION>
<OPTION VALUE="東京">東京</OPTION>
<OPTION VALUE="大阪">大阪</OPTION>
</SELECT><BR>
<TEXTAREA NAME="TextArea" ROWS="7" COLS="73" onFocus="test()">

</TEXTAREA>
<INPUT TYPE="submit" NAME="Submit" VALUE="送信">
</form>
    • good
    • 0

関数名についてはhequliさんのおっしゃるとおりです。



スクリプト部分はこんな感じで。
<SCRIPT LANGUAGE="javascript">
function test(){
if (document.main.kubun.options[document.main.kubun.selectedIndex].value==""){
alert("先に選択すること。") ;
return false;
}
}
</SCRIPT>

フォームのタグはこんな感じで。action
<FORM NAME="main" METHOD="POST" onSubmit="return test()" ACTION="default.cgi">
<SELECT NAME="kubun">
<OPTION SELECTED>↓【選択して下さい】</OPTION>
<OPTION VALUE="東京">東京</OPTION>
<OPTION VALUE="大阪">大阪</OPTION>
</SELECT><BR>
<TEXTAREA NAME="TextArea" ROWS="7" COLS="73">

</TEXTAREA>
<INPUT TYPE="submit" NAME="Submit" VALUE="送信">
</form>

思ったように動きました、私の環境(Windows98のNN4、IE4)では。
    • good
    • 0

alertという関数名は予約語なので


違う関数名にしたほうが良いかと思います。

その辺りを考慮してこんな感じでどうでしょうか?
(ちなみに動作確認してないです^^;;)

<SCRIPT LANGUAGE=javascript><!--
function keikoku()
if( document.main.kubun.selectedIndex == 0){
alert("先に選択すること。");
}
//--></SCRIPT>

<FORM NAME="main" ACTION="default.cgi" METHOD="POST">
<SELECT NAME="kubun">
<OPTION SELECTED>↓【選択して下さい】</OPTION>
<OPTION VALUE="東京">東京</OPTION>
<OPTION VALUE="大阪">大阪</OPTION>
</SELECT><BR>
<TEXTAREA NAME="TextArea" ROWS="7" COLS="73" onFocus="keikoku();">

</TEXTAREA>
<INPUT TYPE="SUBMIT" NAME="Submit" VALUE="送信"></form>

参考まで
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!