2013-03-12 39 views

回答

1

您忘記關閉action屬性。

<form action="/orders/{id}" method="get"> 
    <input type="text" name="id"/> 
    <input type="submit" value="Submit"/> 
</form> 

和傳遞{}使用escape()功能。

$queryString = "/orders/{id}"; 
$safeQueryString = escape($queryString); 

<form action="<?=$safeQueryString?>" method="get"> 

通行證表格ID

$('input[type="submit"]').on('click',function(e) 
{ 
    e.preventDefault(); 
    var forms = $(this).parents('form'); 
    var formID = forms.attr('id'); 

    //appending form id to form action 
    var dataString = forms.serialize()+'&formID='+formID; 

    forms.submit(); 

}); 
+0

action屬性是一個錯字,我修正了它。 – 2013-03-12 03:53:57

+0

@哈里還是有同樣的問題..? – 2013-03-12 03:54:33

+0

其實我想提交一個表單,輸入的是從輸入的ID,而不是關於具有特定ID的呈現表單 – 2013-03-12 05:51:06

5

您可以使用GET方法,但你會得到的名稱 - 值對的URL,也不會挑模板。如果您在此表單中輸入「5」:

<form action="/orders" method="get"> 
    <input type="text" name="id"/> 
    <input type="submit" value="Submit"/> 
</form> 

提交時,您將獲得URL/orders?id = 5,而不是/ orders/5。

如果您正在尋找/命令/ 5,這是可以做到很輕鬆了一些jQuery的:

<script type="text/javascript" language="javascript"> 
$("form").submit(function() { 
    // prevent the default GET form behavior (name-value pairs) 
    event.preventDefault(); 

    // Get the action attribute 
    var action = $("form").attr("action").toLowerCase(); 

    // For each form element found, replace {elementName} in the action attribute to build a URL from template 
    var values = $("form").serialize().split("&"); 
    for (var i = 0; i < values.length; i++) { 
     var tokens = values[i].split("="); 
     action = action.replace("{" + tokens[0].toLowerCase() + "}", tokens[1]); 
    } 

    // Send the user off to the URL w/ template elements replaced 
    window.location.href = action; 
}); 
</script> 

你將不得不增加一些逃避可能,並處理條件時,模板輸入是不可用,也可能測試其他邊緣情況,但上面的代碼在基本情況下可以使用任意數量的模板元素,並且可以在上面找到/ orders/5。

相關問題