アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは。いつもお世話になります。
JavaScriptの事で、色々検索して回ったのですが、ピッタリのものが無く。。(>_<)ヽ
もしどなたかわかる方がいらっしゃいましたら、お願い致します。

○不要 ○希望
メールアドレス:「(テキストボックス)」

例えばこのような内容のフォームで、「不要」のラジオボタンがチェックされていた場合は、
メールアドレスは入力せずに送信が出来、「希望」のラジオボタンがチェックされていた場合は、
メールアドレスが入力されていない場合は「メールアドレスを入力して下さい」といった
アラートを出すようなJavaScriptは、どのようにすれば宜しいでしょうか。。

どうぞよろしくお願いいたします。(_ _*)

A 回答 (3件)

たとえばこんな感じ



<script language=javascript>
function check(f){
var kibou="";
for (var i=0;i<f.length;i++){
if(f[i].name=="kibou" && f[i].checked==true) kibou=f[i].value;
}
if(kibou==""){
alert("チェックしてください");
return false;
}else if(kibou=="希望" && f.mailaddress.value==""){
alert("メールアドレスを入力して下さい");
return false;
}
return true;
}
</script>
<form method="get" action="hoge.cgi" onSubmit="return check(this)">
<input type="radio" name="kibou" value="不要">不要 <input type="radio" name="kibou" value="希望">希望<br>
メールアドレス:<input type="text" name="mailaddress"><br>
<input type="submit" value="実行">
</form>
    • good
    • 0
この回答へのお礼

早速にありがとうございます!
ひとつ質問させて下さいませ。。

既にラジオボタンのnameの値が、「f000087034」という物を付けたい場合は、どうすれば良いでしょうか。(_ _*)
「kibou」を「f000087034」で置き換えてみたのですが、エラーが出てしまいました。
応用が利かなくて申し訳ありません(>_<)
どうぞよろしくお願いいたします。

お礼日時:2006/11/08 13:57

すべてのkibouをf000087034に変えるだけですが


前回のは変数名とオブジェクトの名前を一緒につかっていたので
若干わかりにくかったかもしれません。
明示的にわけてみましたので、ご確認ください。
とりあえずチェックしているのはnameだけなのでそれに気づけばすぐです。
おいおい内容は理解していただければ幸いです

<script language=javascript>
function check(f){
var v="";
for (var i=0;i<f.length;i++){
if(f[i].name=="f000087034" && f[i].checked==true) v=f[i].value;
}
if(v==""){
alert("チェックしてください");
return false;
}else if(v=="希望" && f.mailaddress.value==""){
alert("メールアドレスを入力して下さい");
return false;
}
return true;
}
</script>
<form method="get" action="hoge.cgi" onSubmit="return check(this)">
<input type="radio" name="f000087034" value="不要">不要 <input type="radio" name="f000087034" value="希望">希望<br>
メールアドレス:<input type="text" name="mailaddress"><br>
<input type="submit" value="実行">
</form>
    • good
    • 0
この回答へのお礼

うぅ、頂いたスクリプトをシンプルなHTMLに組み込んでみた所、
できたのですが。。できたのですが…。。 (Θ_Θ;)

でも実際に組み込みたいタグの中に入れた所、できなかったのです。。
せっかくご教授頂いたのに、ホント申し訳ありません。。

アンケートフォーム入力 → CGI(入力チェック) → 入力確認画面
で、CGIサーバー側で指定されたタグを入れると、どうもそちらが優先されて、JavaScriptよりもCGI画面の方が先に出てきてしまうんです。

どうも、<input type="submit" value="送信">の中にonclickを組み込んでいかないとだめみたいなんです。。(;>_<;)

お礼日時:2006/11/08 15:30

なんかよくわかんないですが、おそらく組み込みの際に


見落としがあると思うんですけどね・・・
たとえば、フォームが複数あるとか・・・。

submitボタンに何かするよりはbuttonに対して何かやる方が
いいかもしれません。
<script language=javascript>
function check(f){
var v="";
for (var i=0;i<f.length;i++){
if(f[i].name=="f000087034" && f[i].checked==true) v=f[i].value;
}
if(v==""){
alert("チェックしてください");
return false;
}else if(v=="希望" && f.mailaddress.value==""){
alert("メールアドレスを入力して下さい");
return false;
}
f.submit();
}
</script>
<form method="get" action="hoge.cgi">
<input type="radio" name="f000087034" value="不要">不要 <input type="radio" name="f000087034" value="希望">希望<br>
メールアドレス:<input type="text" name="mailaddress"><br>
<input type="button" value="実行" onClick="check(this.form)">
</form>
    • good
    • 0
この回答へのお礼

yambejpさま、何度も本当にすみません。
ありがとうございます!

ただ…今回頂いたスクリプトも、何故かスルーされてしまい、
チェックが働かないまま、アラートの表示がないまま、次のCGIページに移行してしまいました。
せっかく考えて頂いたのに…申し訳ありません。

今回は、このようなスクリプトで、とりあえずアラートは出すことができました。(アラート表示後、次のCGIページに移ってはしまうのですが、ユーザーにアラートで注意を促すようにはできたので…。

<SCRIPT language="JavaScript">
function check() {
rcheck = document.formChecker.f000087034[0].checked; //ラジオボタンf000087034の2つ目(f000087034[0])の状態を取得
//rcheckの内容がtrue(ボタンが押されている状態)かどうかで条件分岐
if (rcheck) {
//tureの場合
document.location = "hoge"; //リンク先を呼び出す
} else {
//falseの場合
alert("メールアドレスを入力して下さい"); //アラートを表示する
}
}
</SCRIPT>

</HEAD>

<BODY>
<FORM method="post" action="hoge" NAME="formChecker">
<INPUT type="radio" name="f000087034" value="1">不要 <INPUT type="radio" name="f000087034" value="2" checked> 希望 <INPUT TYPE="button" VALUE="送信" onClick="check()">
<!-- 管理ID --(このタグが元凶です。。)>
<input type="hidden" name="SMPFORM" value="hogehogehoge">
</FORM>

何度もご返信頂いてしまって、本当にすみませんでした。
でも、ホント感謝しております~!(TдT)
ありがとうございました!!

お礼日時:2006/11/08 17:57

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