0

ページAとBがあります。ページAが読み込まれると、ユーザーから入力を受け取ります。60秒後、ページは自動的にページBにリダイレクトされます。以下のコードを使用しましたが、値が渡されません。

<html>
<head>
  <script type="text/javascript">
     function printVal()
     {
       printVal.counter--;
       document.getElementById("timer").innerHTML = printVal.counter;
       if(printVal.counter==0){
         window.location="next.php";
       }
     }

     function callfun()
     {
       setInterval(printVal,1000);
     }

     printVal.counter=61;
  </script>
</head>
<body>
  <input type="submit" value="Click Me" onclick="callfun()">
  <p id="timer"></p>
  <form method='post' action='next.php'>
     <input type='text' name='val'>
  </form>
</body>
</html>

リストを作成する必要があります。ユーザーがテキストボックスに何かを入力してEnterキーを押すと、リストボックスに追加されます。60秒後、リストボックスの値をnext.phpに渡します。

4

2 に答える 2

2

変更window.locationしても、フォームの値は新しい場所に送信されません。代わりにフォームを送信する必要があります。

if(printVal.counter==0)
    document.getElementsByTagName("form")[0].submit();
}
于 2012-08-17T19:22:24.620 に答える
1

これは、有用な回答を試みるための非常に広範な質問です。

リストボックスから始めましょう:あなたは尋ねます:once user types something in text box and press enter it should go and add in a list box. and after 60 seconds i want the values in the list box to be passed to next.php

ユーザーがそのリストボックス(のデータ)に対して何もしないのに、なぜデータをリストボックスに入れるのでしょうか?したがって、あなたの考え方は、リストボックスを使用して個別の値を保持し、next.phpにPOSTできるようにすることだったと思います。

あなたが言う値を区切る?悪くない取引。json、ajaxなどを無視して、単純な単純なバニラJavaScriptを使用して「釣り方を教えて」みましょう。モジュール化はあなたに任せます!

html input-elementのname-attributeとして、次のような配列<input "name=itm[]">を指定することもできます:(これは「リストボックス」(別名)を作成するときにも行います<select name="var[]" multiple="yes">)。それらをリストにうまく表示しましょう。したがって、textarea / inputfieldでEnterキーを押すと、入力フィールドを含むリストアイテムがフォームに追加されます。

タイマーがゼロに達したら、form.submit()(Andreasも指摘したように)を使用してフォームを送信する必要があります。

簡略化されているが完全に機能する例を次に示します 。

<!DOCTYPE html><html><head><title>demo</title>

<script type="text/javascript">
window.onload=function(){
   itmLi=document.createElement('li');
   itmInp=itmLi.appendChild(document.createElement('input'));
   itmInp.type='text';
   itmInp.name='val[]';

   theItms=document.getElementById('theItems');

   fetchItem=function(el,evt){
      var itmAct, keyCode=(evt.which) ? evt.which : event.keyCode;
      if (keyCode == 13){
         itmAct=theItms.appendChild(itmLi.cloneNode(true));
         itmAct.firstChild.value=el.value;
         el.value='';
         return false;
      }
   };


   theTmr=document.getElementById('tmrOut');
   myTimer=function(){
      var t=Number(theTmr.innerHTML);
      if(t){
         theTmr.innerHTML=t-1;
         window.setTimeout(myTimer,1000);
      } else {
         theItms.parentNode.submit();
      }
   };
   window.setTimeout(myTimer,1000);

   document.getElementById('inpTxt').focus(); //sigh.. firefox does not work AGAIN.
};
</script>

</head><body>

<p>Time left: <span id="tmrOut">60</span></p>

<textarea id="inpTxt" onkeyup="return fetchItem(this,event);"></textarea>

<form id="theForm" method="post" action="next.php">
<ul id="theItems"></ul>
</form>

</body></html>

そしてもちろん、このフィドルで動作するデモを見つけることができます(このデモは60秒ではなく10秒間実行されることに注意してください)。

これで、php-scriptは1つの変数next.phpを受け取ります:(すでに名前を付けているように)が、この変数は実際には入力されたすべての項目を含む配列です(Enterキーで区切られています)。 多田! val

変数をphpに渡す方法だけを尋ねたので、私の答えはここで止まります。受信側のphp側でヘルプが必要な場合は、最初にRTMをお勧めします。

幸運を!!

于 2012-08-17T23:25:36.890 に答える