2013-01-06 62 views
0

我有一個表格:鉻_blank形式和JQuery雙提交

<form accept-charset="UTF-8" action="/back/pages/22?locale=fr" class="form-horizontal page-form" enctype="multipart/form-data" id="edit_page_22" method="post" target="_blank"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓"> 
    <p><a href="#" id="no_window">Submit</a></p> 
    <p><a href="#" id="new_window">Submit & _blank</a></p> 
</form> 

而且腳本附:

$(document).ready(function() { 
    var page_form; 
    page_form = { 
     elem: $('form.page-form'), 

     rand_action: function() { 
     var action; 
      action = this.elem.attr('action'); 
      return this.elem.attr('action', action + '&count=' + Math.random() * 1000); 
     }, 
     submit_blank: function() { 
     this.elem.attr('target', '_blank'); 
     $('<input>').attr({ 
      type: 'hidden', 
      id: 'input_new_window', 
      name: 'edit_redirect', 
      value: 'true' 
     }).appendTo(this.elem); 
     return this.elem.submit(); 
     }, 
     submit: function() { 
     this.elem.attr('target', '_self'); 
     $('#input_new_window').remove(); 
     return this.elem.submit(); 
     } 
    }; 

    $("#new_window").click(function(event) { 
     event.preventDefault(); 
     page_form.submit_blank(); 
     page_form.rand_action(); 
     return page_form.submit(); 
    }); 
    $("#no_window").click(function(event) { 
     event.preventDefault(); 
     return page_form.submit(); 
    }); 
    }); 

它在FF,但無法在Chrome很好地工作,任何想法,爲什麼?

回答

0

這是基於默認的瀏覽器行爲,除非指定要打開新選項卡,否則無法使用chrome執行此操作。

SEE DEMO

$(document).ready(function() { 
    var form; 
    form = $('form.page-form'); 
    $("#submit_blank").click(function(event) { 
     event.preventDefault(); 
     $('<input>').attr({ 
     type: 'hidden', 
     id: 'input_new_window', 
     name: 'edit_redirect', 
     value: 'true' 
     }).appendTo(form); 
     form.submit(); 
     return window.open(window.location.href.replace(/form/, '')); 
    }); 

    $("#no_window").click(function(event) { 
     event.preventDefault(); 
     form.attr('target', '_self'); 
     return form.submit(); 
    }); 
    }); 

注:您應該添加一個測試,以獲得該瀏覽器當前正在運行,以避免爲每個瀏覽器相當的工作任何意外的行爲這可以通過使用window.open()方法來完成這個不同。

+0

這不是我想要做的事情:我想在新選項卡中打開窗體的目標並用窗體更改頁面的位置。這是我的代碼在FF上實際執行的操作,而不是在Chrome上執行。 – Awea