WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:confirm時に表示内容を保存

0:[投稿] moto [2002/10/18 16:50 ][環境:WIN+IE UNIX系+Java]

お世話になります。motoです。
confirm時にfalseを選択するとき、現在、textareaやラジオボタンで
表示されている内容を保存したいのですが、やり方がわからずリセットされてしまいます。
ソースは下記のように記述しています。
どなたかご教授ください。
よろしくお願いします。

function test_onSubmit(){
       if (document.TestForm.num.value==""){
    if (window.confirm("よろしいですか?")) {
       wkmsg ="mailto:" + document.TestForm.num.value + "?Subject=伝言";
        wkmsg = wkmsg + "?body="+ document.TestForm.msg1.value;
        document.TestForm.action = wkmsg;
        return true;
}
else{
document.TestForm.msg1.value =msgva + msgvb + msgvc + msgvd + msgve;
}
}
else {    
wkmsg ="mailto:" + document.TestForm.num.value + "?Subject=伝言";
wkmsg = wkmsg + "?body="+ document.TestForm.msg1.value;
     document.TestForm.action = wkmsg;
        return true;
}
}


1:[回答] JTR [2002/10/18 17:11 ]

>表示されている内容を保存したいのですが、
保存したい?

あと、HTMLも載せて下さい。
ちなみに、下のほうの
    document.TestForm.action = wkmsg;
に漢字スペースが入っていますよ。


2:[回答] moto [2002/10/18 18:29 ]

JTR様 お世話になります。
保存というより、リセットさせずに残したいということです。
環境間違っていました。:WIN+IE WIN系+Javaでした。スミマセン。。
ちなみに、全ソースを記述すると大変なことになってしまうので、
ちょっと変えました。
よろしくお願いします。

<HTML>

<br>
<p>
<script type="text/javascript">
 
msgva="";
msgvb="";
msgvc="";
msgvd="";
msgv1="";
msgv2="";
msgv="";
wkmsg="";

   function check(radio) {
    form = radio.form;
    msgvb = radio.value ;
    form.msg1.value =msgva + msgvb + msgvc + msgvd;
    f1=false, f2=false;
}

    function checkb(parts){
    msgvc = "\n" + parts.value ;
    form.msg1.value = msgva + msgvb + msgvc + msgvd;
    f3=false, f4=false,f5=false;
}
   function test_onSubmit(){
       if (document.TestForm.num.value==""){
    if (window.confirm("よろしいですか?")) {
       wkmsg ="mailto:" + document.TestForm.num.value + "?Subject=伝言";
        wkmsg = wkmsg + "?body="+ document.TestForm.msg1.value;
        document.TestForm.action = wkmsg;
        return true;
}
else{
    document.TestForm.msg1.value =msgva + msgvb + msgvc + msgvd + msgve;

}
}

        else {    
        wkmsg ="mailto:" + document.TestForm.num.value + "?Subject=伝言";
        wkmsg = wkmsg + "?body="+ document.TestForm.msg1.value;
        document.TestForm.action = wkmsg;
        return true;
    }

}

    function clearb() {    
    msgva="";
    msgvb="";
    msgvc="";
    msgvd="";
    msgv1="";
    msgv2="";
    msgv="";
    wkmsg="";
}
</script>
</p>
<form name="TestForm" ENCTYPE="text/plain" onSubmit="return test_onSubmit()">
<p>

<br>
<br>
<INPUT TYPE="radio" NAME="hyouka" value="abcde" onClick="check(this)">abcde<br>
<INPUT TYPE="radio" NAME="hyouka" value="fghij" onClick="check(this)">fghij<br>
<br>
<hr width=400 align=left>
<br>
<INPUT TYPE="radio" NAME="hyouka2" value="あいうえお" onClick="checkb(this)">あいうえお <br>
<INPUT TYPE="radio" NAME="hyouka2" value="かきくけこ" onClick="checkb(this)">かきくけこ<br>
<INPUT TYPE="radio" NAME="hyouka2" value="さしすせそ" onClick="checkb(this)">さしすせそ<br>
<br>
To:<INPUT NAME="num" SIZE="40">

<b><font color=blue>★内容を確認してください★</b></font>
<br>
<br>
<TEXTAREA "text" NAME="msg1" ROWS="5" COLS="40">
</TEXTAREA>
<br>
<br>
<INPUT TYPE="reset" VALUE="取り消し" onclick="clearb()">
<INPUT TYPE="submit" VALUE="メール送る">
</p>
</form>
</html>


3:[質問] moto [2002/10/21 09:24 ]

先日投稿した内容が質問なのに、回答で投稿してしまったので、
再度、投稿します。

保存というより、リセットさせずに残したいということです。
環境間違っていました。:WIN+IE WIN系+Javaでした。スミマセン。。
ちなみに、全ソースを記述すると大変なことになってしまうので、
ちょっと変えました。
よろしくお願いします。

<HTML>

<br>
<p>
<script type="text/javascript">
 
msgva="";
msgvb="";
msgvc="";
msgvd="";
msgv1="";
msgv2="";
msgv="";
wkmsg="";

   function check(radio) {
   form = radio.form;
   msgvb = radio.value ;
   form.msg1.value =msgva + msgvb + msgvc + msgvd;
   f1=false, f2=false;
}

   function checkb(parts){
   msgvc = "\n" + parts.value ;
   form.msg1.value = msgva + msgvb + msgvc + msgvd;
   f3=false, f4=false,f5=false;
}
  function test_onSubmit(){
      if (document.TestForm.num.value==""){
   if (window.confirm("よろしいですか?")) {
      wkmsg ="mailto:" + document.TestForm.num.value + "?Subject=伝言";
       wkmsg = wkmsg + "?body="+ document.TestForm.msg1.value;
       document.TestForm.action = wkmsg;
       return true;
}
else{
   document.TestForm.msg1.value =msgva + msgvb + msgvc + msgvd + msgve;

}
}

       else {    
       wkmsg ="mailto:" + document.TestForm.num.value + "?Subject=伝言";
       wkmsg = wkmsg + "?body="+ document.TestForm.msg1.value;
       document.TestForm.action = wkmsg;
       return true;
   }

}

   function clearb() {    
   msgva="";
   msgvb="";
   msgvc="";
   msgvd="";
   msgv1="";
   msgv2="";
   msgv="";
   wkmsg="";
}
</script>
</p>
<form name="TestForm" ENCTYPE="text/plain" onSubmit="return test_onSubmit()">
<p>

<br>
<br>
<INPUT TYPE="radio" NAME="hyouka" value="abcde" onClick="check(this)">abcde<br>
<INPUT TYPE="radio" NAME="hyouka" value="fghij" onClick="check(this)">fghij<br>
<br>
<hr width=400 align=left>
<br>
<INPUT TYPE="radio" NAME="hyouka2" value="あいうえお" onClick="checkb(this)">あいうえお <br>
<INPUT TYPE="radio" NAME="hyouka2" value="かきくけこ" onClick="checkb(this)">かきくけこ<br>
<INPUT TYPE="radio" NAME="hyouka2" value="さしすせそ" onClick="checkb(this)">さしすせそ<br>
<br>
To:<INPUT NAME="num" SIZE="40">

<b><font color=blue>★内容を確認してください★</b></font>
<br>
<br>
<TEXTAREA "text" NAME="msg1" ROWS="5" COLS="40">
</TEXTAREA>
<br>
<br>
<INPUT TYPE="reset" VALUE="取り消し" onclick="clearb()">
<INPUT TYPE="submit" VALUE="メール送る">
</p>
</form>
</html>


4:[回答] JTR [2002/10/21 09:44 ]

ご報告。
私の環境(WIN98-IE6)では、再現しませんでした。(ちゃんと入力値は、残っている)
あと、関数checkにまだ漢字のスペースがあるようです。


5:[質問] moto [2002/10/21 11:06 ]

たびたびすみません。
最初に、okを返答して次にキャンセルを返答すると、
メーラー起動のメッセージ表示後、
入力値が残るようです。
最初にキャンセル返答すると、入力値はやはりリセットされてしまいます。
処理がなにか足らないのでしょうか?


6:[お知らせ] Malic [2002/10/21 11:36 ]

function checkb(parts) の関数のほうにもフォームの代入文を入れましょう。
(win2000,IE6.0でエラーになってます)

form = parts.form;




7:[回答] JTR [2002/10/21 11:54 ]

とりあえず、以下で、リセットはしなくなりました。
要は、リセットときに、自分でエリアを初期化していますね。

直した所は。
1、checkb関数の form をTestFormに。
2、check関数の頭に漢字スペース。
3、あとは以下の周辺。
//    document.TestForm.msg1.value =msgva + msgvb + msgvc + msgvd + msgve;
     return false;
  }
}
//else {    
//       wkmsg ="mailto:" + document.TestForm.num.value + "?Subject=伝言";
//       wkmsg = wkmsg + "?body="+ document.TestForm.msg1.value;
//       document.TestForm.action = wkmsg;
//       return true;
//   }

-----------------------------------------------------------
<HTML>

<br>
<p>
<script type="text/javascript">
 
msgva="";
msgvb="";
msgvc="";
msgvd="";
msgv1="";
msgv2="";
msgv="";
wkmsg="";

function check(radio) {
  form = radio.form;
  msgvb = radio.value ;
  form.msg1.value =msgva + msgvb + msgvc + msgvd;
  f1=false, f2=false;
}

function checkb(parts){
  msgvc = "\n" + parts.value ;
  TestForm.msg1.value = msgva + msgvb + msgvc + msgvd;
  f3=false, f4=false,f5=false;
}
function test_onSubmit(){
if (document.TestForm.num.value==""){
  if (window.confirm("よろしいですか?")) {
     wkmsg ="mailto:" + document.TestForm.num.value + "?Subject=伝言";
      wkmsg = wkmsg + "?body="+ document.TestForm.msg1.value;
      document.TestForm.action = wkmsg;
      return true;
  }
  else{
//    document.TestForm.msg1.value =msgva + msgvb + msgvc + msgvd + msgve;
     return false;
  }
}
//else {    
//       wkmsg ="mailto:" + document.TestForm.num.value + "?Subject=伝言";
//       wkmsg = wkmsg + "?body="+ document.TestForm.msg1.value;
//       document.TestForm.action = wkmsg;
//       return true;
//   }
}

  function clearb() {    
  msgva="";
  msgvb="";
  msgvc="";
  msgvd="";
  msgv1="";
  msgv2="";
  msgv="";
  wkmsg="";
}
</script>
</p>
<form name="TestForm" ENCTYPE="text/plain" onSubmit="return test_onSubmit()">
<p>

<br>
<br>
<INPUT TYPE="radio" NAME="hyouka" value="abcde" onClick="check(this)">abcde<br>
<INPUT TYPE="radio" NAME="hyouka" value="fghij" onClick="check(this)">fghij<br>
<br>
<hr width=400 align=left>
<br>
<INPUT TYPE="radio" NAME="hyouka2" value="あいうえお" onClick="checkb(this)">あいうえお <br>
<INPUT TYPE="radio" NAME="hyouka2" value="かきくけこ" onClick="checkb(this)">かきくけこ<br>
<INPUT TYPE="radio" NAME="hyouka2" value="さしすせそ" onClick="checkb(this)">さしすせそ<br>
<br>
To:<INPUT NAME="num" SIZE="40">

<b><font color=blue>★内容を確認してください★</b></font>
<br>
<br>
<TEXTAREA "text" NAME="msg1" ROWS="5" COLS="40">
</TEXTAREA>
<br>
<br>
<INPUT TYPE="reset" VALUE="取り消し" onclick="clearb()">
<INPUT TYPE="submit" VALUE="メール送る">
</p>
</form>
</html>


8:[回答] Malic [2002/10/21 11:57 ]

>最初にキャンセル返答すると、入力値はやはりリセットされてしまいます。

win2000,IE6 と win95,IE5.5sp2 とも、
リセットされずに、ページを表示できません の画面が出てきます・・・(要するに ./test.html?hyouka=&hyouka2= という電文が飛んでいくが、test.htmlでは何も返せない。:test.htmlは適当に読み換えてね)

test_onSubmit 関数にリターン値が無いのが原因でしょうか?(自信5割・・・)


9:[質問] moto [2002/10/21 11:58 ]

Malic様、ご指摘ありがとうございます。
ただ、やはり解決しません。
if文の定義がおかしいのでしょうか?


10:[回答] Malic [2002/10/21 13:13 ]

if文は問題なかったです。
(・・・alert("テスト"); とか、入れてみれば、問題なく動いていることは分かります。)

return false; でfalseがうまく返っていないのか、onSubmitイベントで、return 関数の戻り値 という形は取れないのか・・・
のどちらかでしょう。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
僕も商用サイトのHTML等を作成してますが、submitさせるときは、 <input type="button" onClick="submitfunction(this.form)"> という形を取り、

submitfunction(sendform){
・・・処理・・
document.FORM.submit();
}
でサブミットしてます。

onSubmit イベントを使わずに、document.フォーム名.submit(); 使ったらどう?

 


11:[完了] moto [2002/10/21 13:26 ]

JTR様、Malic様、ありがとうございます。
JTR様のご指摘内容でためしてみたところ、うまくいきました。
Malic様のいうようにdocument.フォーム名.submit()
の方法でも、試してみたいと思います。
いろいろと、ありがとうございました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World