2011-04-21 43 views
6

我有一個簡單的表單,可以通過一個小的jQuery腳本在元素外部提交。jQuery提交不在Opera中工作

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#mybutton').click(function(){ 
      $('#myform').attr('action', '/url/to/form').submit(); 
     }); 
    }); 
</script> 

按鈕僅僅是一個正常的鏈接

<a href="javascript:void(0);" id="mybutton">Just a normal link</a> 

形式僅僅是一個正常的形式

<form id="myform" action="/url/to/form"> 
    .... 
    <input type="submit" value="Search"> 
</form> 

能正常工作在IE,FF,Chrome和Safari瀏覽器而不是歌劇。在Opera中,它總是重定向到我的主頁,而不是表單動作的URL。我已經嘗試在腳本中設置動作(如上所述),通常在表單動作參數內但沒有運氣。我正在運行最新的jQuery和Opera。

請幫

編輯:我也使用jQuery UI框架來處理一些內容和互動的

+0

你好,顯然Opera想知道你想要尋找什麼樣的目標頁面。你是否也嘗試以正常的HTML方式提交表單?如果是這樣,它的工作? – reporter 2011-04-21 10:48:39

+0

什麼是您的#mybutton的html代碼? – 2011-04-21 10:49:26

+0

按鈕的標記是什麼樣的?它在表單內嗎? – Pointy 2011-04-21 10:50:30

回答

1

我相信這將與某些事情有關,用目前不完整的jquery ui select類。它添加了一個標籤與href作爲#我相信這可能是你的問題。

+0

我看了一下UI類,是的,它在href中使用#。由於某種原因,這似乎是在提交頁面上重定向頁面。改變這是jQuery UI腳本停止這個。謝謝 – bpneal 2011-04-21 14:48:48

1

我會做的第一件事就是更改處理程序,以防止該鏈接的默認操作:

$('#mybutton').click(function(ev){ 
     ev.preventDefault(); 
     $('#myform').attr('action', '/url/to/form').submit(); 
    }); 

使用<a>標籤按鈕意味着你必須要小心的是,瀏覽器不會在語義混淆。我沒有很多在Opera上調試的經驗,但這是我懷疑的第一件事。

如果沒有與「按鈕」相關的真正「href」,我會質疑爲什麼它是一個<a>標籤;它可能只是一個簡單的<span>,它也可以附加一個點擊處理程序,但不具有任何潛在問題的本機行爲。

0

嘗試的只是 $('#myform').submit();代替 $('#myform').attr('action', '/url/to/form').submit();

編輯:對方回答說,你首先必須在click事件做任何事情之前調用event.preventDefault();,作爲防止瀏覽器重定向你。

EDIT2:正確的代碼如下:

<script type="text/javascript"> 
$(document).ready(function() { 
    $('#mybutton').click(function(event){ 
     event.preventDefault(); 
     $('#myform').attr('action', '/url/to/form').submit(); 
    }); 
}); 

這應該很好地工作。

+0

表單動作可能會發生變化 – Zebra 2011-04-21 11:15:29

+0

@dany:明白了,改變了答案,這是不正確的。 – 2011-04-21 11:20:11

+0

a標籤更多的是一個例子,而不是一個設計選擇。我已將其更改爲跨度幷包含preventDefault命令,但仍遇到同樣的問題。 – bpneal 2011-04-21 11:51:28