2012-06-05 111 views
0

我試圖將文本輸入字段的值(數量)附加到網址。當然,我無法得到這個工作。將表單字段附加到網址

我得的是:

<form class="formProduct" id="formProduct" action="#" method="post"> 
<input type="text" name="quantity" id="formProductQuantity" value="{{ product.stock.minimum }}" /> // text field with quantity 
<a class="button blue opener" href="" title="{{ 'Add to cart' | t }}"><span>{{ 'Add to cart' | t }}</span></a> // submit button 
</form> 

<script> 
var addUrl = "http://shop.com/cart/add/123456/?quantity="; // 123456 is the product id 

asset("#formProduct"); 

function asset(product){ 

    $(product + " input#formProductQuantity").val("1"); 
    $(product + " #formProductQuantity").keyup(function() { 
     var val = $(product + " input#formProductQuantity").first().val(); 
    }); 

    $(product + " .opener").click(function() { 
      var val = $(product + " input#formProductQuantity").first().val(); 

       // Go to page 
       window.location.href = addUrl + val; 

    }); 
} 
</script> 

所以我嘗試是通過填寫表單傳遞給http://shop.com/cart/add/123456/?quantity=100例如數量。 上面的代碼我發現在這個論壇上,但我無法得到這個工作。

任何幫助更多的則歡迎

UPDATE

好THX這裏所有幫助我得到它的工作。任何意見或修改仍然是受歡迎的。功能代碼如下所示:

<script type="text/javascript"> 
var addUrl = "http://shop.com/cart/add/123456/?quantity="; // 123456 is the product id 

jQuery(document).ready(function(){ 
    asset("#formProduct"); 
    }); 
function asset(product){ 

jQuery(product + " input#formProductQuantity").val("1"); 
jQuery(product + " #formProductQuantity").keyup(function() { 
    var val = jQuery(product + " input#formProductQuantity").first().val(); 
}); 

jQuery(product + " .opener").click(function(event) { 
    event.preventDefault(); 
    $.get($(this).attr('href'), function(data, status) { 
     var val = jQuery(product + " input#formProductQuantity").first().val(); 

      // Go to page 
      window.location.href = addUrl + val; 
    $("#dialog").dialog("open"); 
      return false; 

    }); 
})} 

+0

skashi的答案應該工作(+1)。我只是想提出相同的建議。 – hade

回答

2

您正在嘗試向提交按鈕添加Javascript,因此它將通過Javascript運行,但表單仍將提交,因此window.location.href不會發生。你需要做的是添加

return false;

你的資產的end()函數:

$(product + " .opener").click(function() { 
    var val = $(product + " input#formProductQuantity").first().val(); 

    // Go to page 
    window.location.href = addUrl + val; 
    return false; 
}); 

這將從提交停止的形式,讓您的window.location.href爲你需要的重定向。

+0

我試過這個,但現在的url看起來像一個正常的網址。像這樣:http://shop.com/productname。其中「產品名稱」是實際的seo產品名稱。當我將表單中的空白「href」更改爲http://shop.com/cart/add/123456/?quantity=時,網址看起來不錯,但數量未傳遞到「quantity =」。顯然,代碼中有錯誤,也許我需要像onclick = addUrl + val或類似的東西?我的技能是有限的,所以忍受着我。 – Meules

+0

這是爲我工作。我必須將jQuery代碼包裝在: jQuery(document).ready(function(){ // code }); 看到我完成的代碼示例:http://pastebin.com/TbkLMc5F – skashi

+0

使用此鏈接,因爲它鏈接到谷歌的jquery api:http://pastebin.com/zKAvGD7A – skashi

1

我認爲你可以使用GET方法來提交表單,將通過URL

+0

是的,這是真的,謝謝!但是這似乎並不奏效。我真的不明白我做錯了什麼。你有其他解決方案嗎? – Meules

1

你是關閉發送數據。在你的函數

var val = $("#formProductQuantity").val(); 

var addUrl = "http://shop.com/cart/add/123456/?quantity=" + val 
top.location = addUrl 

更新在href:如果你想在#formProductQuantity瓦爾然後用這個 {{「放入購物車」 | T】} //提交按鈕

在您的功能補充一點:

$(".opener").attr("href", "http://shop.com/cart/add/123456/?quantity=" + val); 

現在錨設置,並準備去......然後,當他們點擊的錨,我們就走了:-)你也可以添加target =「_ blank」在新頁面中打開url。

+0

我想要我的網址中的val。像「http .... /?數量= 100」 – Meules

+0

感謝您的意見和建議。再次,這是行不通的。顯然,鏈接不斷變回上述的正常網址。很顯然,我必須在空href或action中添加一個鏈接。然後,jquery應該將數量傳遞給特定的url,也許這可以通過「onclick」或其他方法來完成。你能幫助我嗎? +1爲你的幫助;) – Meules

+0

我不想成爲一個痛苦...但整體功能將如何看起來像?第一次它第二次工作,它不再...我想我改變了一些東西,但不記得它。 – Meules