2014-05-04 29 views
-1

我試圖改變使用jQuery的形式的行動。聽起來很簡單。這是我有:動態地改變了HTML表單與jQuery不起作用

的mypage.html

<form id="myform" method="POST" action="fake" onsubmit="changeAction()"> 
<!-- Several fields here --> 
</form> 

mypage.js

function changeAction() 
{ 
    $('#myform').submit(function() { 
     // Dynamically builds action 
     var action = '/some/url/based/on/dynamic/content'; 
     $('#myform').attr('action', action); 
    }); 
} 

我的問題是稱爲行動總是,默認我放入表單中的行動。我嘗試了幾個選項,如get(0).setAttribute而不是attr,但似乎沒有任何工作。使用jQuery 1.10.2,如果有幫助。

如何在提交之前動態更改表單動作?

+1

什麼移動'.attr'叫你打電話之前'提交()'。這一點可能太遲了嗎? – Danny

+0

你使用(只)一個按鈕來提交表單?或者按回車鍵也提交表單? – Ejaz

+0

也許你可以使用這個技巧,https://stackoverflow.com/questions/6103077/perform-action-before-form-submit – KBN

回答

1

問題是,您從提交事件運行的代碼不會更改操作,它僅綁定一個事件,如果再次提交表單,它將更改操作。

變更功能的作用,而不是綁定的事件:

function changeAction() { 
    // Dynamically builds action 
    var action = '/some/url/based/on/dynamic/content'; 
    $('#myform').attr('action', action); 
} 
+0

完全有效。非常感謝! – jorgeas80