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

function incheckの中に、5つほどifを重ねてみました。条件に合わないとアラーとをだします。選択はラジオボタンで行っています。
条件に合わないと各々それに応じたアラートがでるところまではなんとか出来ましたが、
2回目に選択しなおして、かつそれが再度すべての条件にあっていないにもかかわらず、OKとされてしまいます。
一度ひとつのif条件にあったことをしてしまうと、そのif条件は2度目からチェックしてくれません。
どうすれば、つどつど全部のif条件をチェックしてくれるでしょうか?
尚、こちらにタグを貼ろうとしたら、質問の欄は文字制限があるようで、ちょっとオーバーしてしまいました。
どなたかが回答してくださったら、すぐに補足欄にはらさせていただきます。
あいまいな質問で申し訳ないのですが、どなたかよろしくご指導願います。

A 回答 (3件)

ひとつづつ必ず選んで、順位付けをするようにするのでしょうか。


それで、一度りんごを1位にして、みかんを1位に選びなおすとりんごの未チェックが判定できない。ということでしょうか。
これは、チェックが外れたときにfalseにならないせいですね。
それだと、このようにしてはいかがですか。
----
<p>りんご
<input type="radio" name="R1" value="りんご" onclick="f11=true,f12=false,f13=false">
<input type="radio" name="R2" value="りんご" onclick="f21=true,f22=false,f23=false">
<input type="radio" name="R3" value="りんご" onclick="f31=true,f32=false,f33=false"></p>
<p>みかん
<input type="radio" name="R1" value="みかん" onclick="f11=false,f12=true,f13=false">
<input type="radio" name="R2" value="みかん" onclick="f21=false,f22=true,f23=false">
<input type="radio" name="R3" value="みかん" onclick="f31=false,f32=true,f33=false"> </p>
<p>いちご
<input type="radio" name="R1" value="いちご" onclick="f11=false,f12=false,f13=true">
<input type="radio" name="R2" value="いちご" onclick="f21=false,f22=false,f23=true">
<input type="radio" name="R3" value="いちご" onclick="f31=false,f32=false,f33=true"> </p>
---
他のラジオボタンが押されたときに、その他のフラグ情報をfalseにします。
もっとスマートな方法があるかもしれませんが、とりあえずお試しください。

この回答への補足

>ひとつづつ必ず選んで、順位付けをするようにするのでしょうか。
>それで、一度りんごを1位にして、みかんを1位に選びなおすとりんごの未チェック>が判定できない。ということでしょうか。
そうです。まさにそうです。

>これは、チェックが外れたときにfalseにならないせいですね。
そうか!そうすればいいのかー。

>それだと、このようにしてはいかがですか。
はい、さっそくやってみたいのですが、退社時間がきてしまいました。
自宅に帰ってから、再度挑戦いたします。
ひょっとしたらお礼が月曜になってしまうかもしれませんが、
申し訳ないのですが、少々お待ちくださいませ。

本当にありがとうございました。やってみまーす!

補足日時:2002/02/01 19:56
    • good
    • 0
この回答へのお礼

でけました。ありがとうございました。
とてもわかりやすかったです。
遅い時間にすばやく対応頂きまして助かりました。
ありがとうございました。

お礼日時:2002/02/04 11:07

チェックが外れた時に、変数をfalseにしてないのが原因、というのは madman さんの回答の通りですね。



ラジオボタン1個ごとに変数を作って真偽値で判断されてますが、1位は今何で、2位は何で、ということを管理した方が、プログラムがすっきりしますよ。
以下、参考程度に

# スクリプト部
<SCRIPT><!--
f1 = f2 = f3 = 0;
RINGO = 1;
MIKAN = 2;
ITIGO = 3;

// 入力ミスの判別
function incheck() {
  var err = '';
  err += fcheck(RINGO, "りんご", err);
  err += fcheck(MIKAN, "みかん", err);
  err += fcheck(ITIGO, "いちご", err);
  if (err) {
    alert(err + "が選択されていません。");
    return false;
  }
  return true;
}
// くだものの選択チェック
function fcheck(code, name, err) {
  if (f1 != code && f2 != code && f3 != code)
    return (err ? 'と' : '') + name;
  return '';
}
//--></SCRIPT>

# BODY部
<P>
 りんご
 <INPUT type="radio" name="R1" value="りんご" onclick="f1=RINGO">
 <INPUT type="radio" name="R2" value="りんご" onclick="f2=RINGO">
 <INPUT type="radio" name="R3" value="りんご" onclick="f3=RINGO">
</P>
<P>
 みかん
 <INPUT type="radio" name="R1" value="みかん" onclick="f1=MIKAN">
 <INPUT type="radio" name="R2" value="みかん" onclick="f2=MIKAN">
 <INPUT type="radio" name="R3" value="みかん" onclick="f3=MIKAN">
</P>
<P>
 いちご
 <INPUT type="radio" name="R1" value="いちご" onclick="f1=ITIGO">
 <INPUT type="radio" name="R2" value="いちご" onclick="f2=ITIGO">
 <INPUT type="radio" name="R3" value="いちご" onclick="f3=ITIGO">
</P>

ちなみに、送信ボタンの onClick での入力チェックは不要です。
送信ボタンを押しても、FORM の onSubmit が動いて、チェックをしてくれます。
    • good
    • 0
この回答へのお礼

ありがとうございました。
せっかく私にあったJavaさんを書いていただいたのですが、
まだJavaを始めて1週間の私にはちょっと難しかったです。
今回はmadmanさんの方を参考にさせていただきますが、
今後の課題としてleazさんのがわかるようになりたいです。
ありがとうございました

お礼日時:2002/02/04 11:20

回答できるかわかりませんが、とりあえずソースを見せてください。

この回答への補足

<script language="JavaScript">
<!--
f11=false;
f21=false;
f31=false;
f12=false;
f22=false;
f32=false;
f13=false;
f23=false;
f33=false;

//入力ミスの判別
function incheck() {
if (f11==false && f21==false && f31==false){
window.alert("りんごが選ばれていません");
return false;}
   if (f12==false && f22==false && f32==false){
window.alert("みかんが選ばれていません");
return false;}
if (f13==false && f23==false && f33==false){
window.alert("いちごが選ばれていません");
return false;}
}
//--->
</script>

<form action="http://www.altoworld.com/form2/post.cgi"
method="POST" onsubmit="return incheck();">
<p>りんご<input type="radio" name="R1" value="りんご"
onclick="f11=true"> <input type="radio" name="R2"
value="りんご" onclick="f21=true"> <input type="radio"
name="R3" value="りんご" onclick="f31=true"></p>
<p>みかん<input type="radio" name="R1" value="みかん"
onclick="f12=true"> <input type="radio" name="R2"
value="みかん" onclick="f22=true"> <input type="radio"
name="R3" value="みかん" onclick="f32=true"></p>
<p>いちご<input type="radio" name="R1" value="いちご"
onclick="f13=true"> <input type="radio" name="R2"
value="いちご" onclick="f23=true"> <input type="radio"
name="R3" value="いちご" onclick="f33=true"></p>
<p>左から順に1位・2位・3位と考えてください。</p>
<p><input type="submit" name="B1" value="送信"
 onclick="return incheck()"> </p>
</form>

こんなのです。よろしくおねがいします。。。。(ちゃんと動くかな???)

補足日時:2002/02/01 19:18
    • good
    • 0

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