2010-09-11 72 views
4

當表單動作URL動態更改時,當表單提交時,它仍將使用默認動作URL,任何人都知道爲什麼?請看下面的一個簡單例子:動態更改表單動作URL不起作用

<form action="test.php" method="get" id="test"> 
    <select name="id" onChange="formSubmit(this)"> 
    <option value="abc">abc</option> 
    <option value="xyz">xyz</option> 
    </select> 
</form> 

<script type="text/javascript"> 
function formSubmit(element){ 
    var url = $("#test").attr("action", url); 
    var newParam = "&new=123"; 

    url += "?" + element.name + "=" + element.value + newParam; 
    //e.g. formurl now = 'test.php?id=xyz&new=123'; 

    $("#test").attr("action", url); 
    $("#test").submit();//the form will submit to test.php?id=xyz instead of the new URL 
} 
</script> 

Thx。

+1

任何理由,你爲什麼會想這樣做,而是將值插入隱藏字段? – NullUserException 2010-09-11 06:09:27

回答

6

你是url變量最初在第一行分配空值:

var url = $("#test").attr("action", url); 

它應該是:

var url = $("#test").attr("action"); 

您還需要得到form元素與get[0]速記:

$("#test")[0].submit(); 

這是你的功能應該是什麼樣子:

function formSubmit(element){ 
    var url = $("#test").attr("action"); 
    var newParam = "&new=123"; 
    url += "?" + element.name + "=" + element.value + newParam; 
    $("#test").attr("action", url); 
    $("#test")[0].submit(); 
}