2017-02-15 1 views
-1

フィールドが自動的に入力されるフォームを取得するスクリプトがあり、x秒ごとにフォームを自動的に送信するコードがあります。JavaScriptフォームで「無限」のタブが開きます

問題は、この属性(target = "_ blank")をフォームに追加しましたが、コードを実行して新しいタブを無制限に作成するときにフォームが保持されていたことです。

フォームを処理するための新しいタブを作成し、スクリプトの2回目の実行時に、同じタブを使用して処理ページを更新するようにします。

JavaScriptでこれを行うことはできますか?

<form target="_blank" name="myForm" id="myForm" action="process.asp" method="post"> 
     field 1:<input type="text" name="field1" id="field1" /><br> 
     field 2:<input type="text" name="field2" id="field2" /><br> 
    </form> 

    <script type="text/javascript"> // code which executes the submit of form operation 
      window.onload=function(){ 
       var auto = setTimeout(function(){ autoRefresh(); }, 100); 

       function submitform(){ 
        document.forms["myForm"].submit(); 
       } 

       function autoRefresh(){ 
        clearTimeout(auto); 
        auto = setTimeout(function(){ submitform(); autoRefresh(); }, 10000); 
       } 
      } 
    </script>` 

答えて

0

このコード(Ajaxの使用)をお試しください。それはajaxであなたを助け、新しいタブを開かず、最終更新日時付きのフォームを提出するのを助けます。

マイベースで動作します。

あなたのコードで試してください。

<html> 
    <head> 

    </head> 
    <body> 
     <form target="_self" name="myForm" id="myForm" action="process.asp" method="post"> 
      field 1:<input type="text" name="field1" id="F1" /> 
      <br> 
      field 2:<input type="text" name="field2" id="F2" /> 
      <br> 
      <p id="LastDt"></p> 
     </form> 

     <script type="text/javascript"> // code which executes the submit of form operation 
      window.onload = function() { 
       var auto = setTimeout(function() { 
        autoRefresh(); 
       }, 100); 

       function submitform() { 

        if (window.XMLHttpRequest) 
        { 
         // code for IE7+, Firefox, Chrome, Opera, Safari 
         xmlhttp = new XMLHttpRequest(); 
        } else { 
         // code for IE6, IE5 
         xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
        } 
        xmlhttp.onreadystatechange = function() { 
         if (this.readyState == 4 && this.status == 200) { 
          document.getElementById("LastDt").innerHTML = "Last Update : " + new Date(); 
         } 
        }; 

        // It send data on process.asp (silently). 
        xmlhttp.open("POST", "process.asp?field1=" + document.getElementById("F1").value + "&field2=" + document.getElementById("F2").value , true); 
        xmlhttp.send(); 
       } 


       function autoRefresh() { 
        clearTimeout(auto); 
        auto = setTimeout(function() { 
         submitform(); 
        }, 10000); 
       } 
      } 

     </script> 
    </body> 
</html> 
0

あなたはprocess.aspで同じフォームを追加し、最初の後に...新しいタブを開き、提出する他のタブにデータを渡すためにpostMessage APIを使用して、それがそこから送信してもらうことができました。

それとものlocalStorageにデータを格納し、更新をリッスンするようにprocess.aspstorage eventsを使用してデータを投稿できる

関連する問題