2014-06-09 45 views
1

我要的是一個新的頁面來創建新的窗體,並將它提交。我從How to create HTML Form in a new window拿起這段代碼。 但它僅與URL中的動作打開新窗口,而不是自動提交表單:創建並在新窗口提交表單 - 不工作

(function($) { 
    Drupal.behaviors.ajax_example2 = { 
     attach: function(context) { 

     jQuery("#btn1").click(

      function() { 

       var form = document.createElement("form"); 
       form.setAttribute("method", "post"); 
       form.setAttribute("action", 'http://moodle.foresteee.com/login/index.php'); 

// setting form target to a window named 'formresult' 
       form.setAttribute("target", "formresult"); 

       var hiddenField = document.createElement("input"); 
       hiddenField.setAttribute("username", "[email protected]"); 
       hiddenField.setAttribute("password", "forest3"); 
       form.appendChild(hiddenField); 
       document.body.appendChild(form); 

// creating the 'formresult' window with custom features prior to submitting the form 
       window.open('test.html', 'formresult', 'scrollbars=no,menubar=no,height=600,width=800,resizable=yes,toolbar=no,status=no'); 

       form.submit(); 
      } 
      ); 

     } 
    } 
})(jQuery); 

而且我已經創建了一個小鏈接:

<a href="#" id="btn1">Click here</a> 
+2

首先附加形式的身體,然後追加隱藏字段構成...檢查它......我不知道......但嘗試 – Jesuraja

+1

純JS混合的jQuery在這種情況下,似乎是壞主意.. –

+0

另外,你確定表格是否正確生成?您是否也查看了生成的HTML以查看輸入元素是否按順序排列?我認爲他們可能不會。 –

回答

3

這似乎是工作:

$('a').click(function(){ 
    window.open('', 'formresult', 'scrollbars=no,menubar=no,height=600,width=800,resizable=yes,toolbar=no,status=no'); 
    $('<form></form>').attr('method','post').attr('action','url_to_post').attr('target','formresult').append('<input type="text" name="test" value="test_value"/>').submit(); 
}); 

JSFiddle

+0

是的,它在Chrome中工作。但不是FF 26.0。可能是什麼原因?我還需要每30秒運行一次該代碼。我應該如何處理這種情況?我需要每30秒鐘打一次window.open嗎? – AgA

+0

也不能在傲遊,IE – AgA

+0

對不起,我不使用FF。您可能需要將該對象附加到一些不可見的div,然後提交。至於每30秒做一次......我真的不明白應該如何工作。也許只需將該功能放在其他將在新窗口中打開的頁面上?或者你需要每30秒鐘打開一個新窗口?聽起來很糟糕。 –

0

所以,整個珀普p窗口的東西是一個小小的90年代,不是嗎? Modals絕對是一種可行的方式,通過一個簡單的框架,比如bootstrap,你可以確保它是跨瀏覽器兼容的,甚至是響應式的。再加上你的界面看起來會好很多。

只記得包括引導CDN:

<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet"> 

<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script> 

HTML:

<a class="btn btn-primary">click me bro</a> 

<div id="popup" class="modal fade"> 
    <div class="modal-dialog"> 
    <div class="modal-content"> 
     <div class="modal-header"> 
     <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> 
     <h4 class="modal-title">Modal's rock!!</h4> 
     </div> 
     <div class="modal-body"> 
     <form method="post" action="url_to_post" target="formresult"></form> 
     </div> 
    </div><!-- /.modal-content --> 
    </div><!-- /.modal-dialog --> 
</div><!-- /.modal --> 

的jQuery:

$('a').click(function(){ 
    $('.modal-body form').empty().prepend('<input type="text" name="test" value="test_value"/>'); 
    $('#popup').modal('show'); 
}); 

檢查出來Fiddle

0

繼續什麼閃光雷做了(他可能值得更多的信貸)

這是我發現他的工作

http://jsfiddle.net/doiks14/a8HFa/11/

出於某種原因,修復,IE不會到提交事件作出響應從形式,除非它在體內。

,我才真正加入$('body').append($form) - 這似乎解決它。