2011-05-01 148 views
0

我希望這個問題有一個明顯的答案,誰知道他的方式周圍的JS和HTML :)預填充的HTML表單按鈕

我有一個非常具體的問題。我試圖添加到網站上的標題按鈕,將會像'快速搜索'這將基本上點擊發送預先填充的表單值到我的搜索頁面,並讓搜索頁面也填充這些值在ajax形式裏面。

下面是一個簡單的搜索頁面的搜索結果頁面以外: http://www.thediamondsexperts.com/index.php?route=product/diamondsearch/jewelry

你會發現,當你改變的值,然後按一下搜索,值也出現在阿賈克斯形式的側邊欄搜索結果頁面。

我只想做的是爲預先設定的搜索創建不同的變體,並將它們作爲按鈕放在標題中。

當我嘗試把一些無形的形式也不會因爲使用相同ID的多個表單值的工作,但總的來說,我認爲必須有一個簡單的方法來做到這一點的服務器端。

例如,複製接受搜索當前功能,有它簡單地調用該函數的onClick預先設定的值,而不是從表格中的值,然後。那有意義嗎?

我需要創造的東西很簡單,雖然這將是容易讓管理員後來改變和定製多個按鈕所以客戶端解決方案是最好的。

非常感謝您的幫助!

回答

0

所有你需要的是隱藏輸入的形式和一個提交按鈕:

<form> 
<input type="hidden" name="param1" value="Predefined value 1" /> 
<input type="hidden" name="param2" value="Predefined value 2" /> 
<input type="hidden" name="param3" value="Predefined value 3" /> 
<button type="submit">Search!</button> 
</form> 

這將只顯示按鈕,但值仍然會被髮送到你的表單的動作。

...必須有一個簡單的方法來做到這一點 服務器端

...一個客戶端解決方案是最好的

...複製接受 當前函數搜索,使用預設的 值,而不是從表單中填充 值,然後調用該函數onClick,然後調用 。 有道理嗎?

不是真的,至少不給我。如果你能澄清我很樂意幫助更多。

當你說「具有相同ID的多個表單值」時,我擔心你可能會感到困惑:沒有要求輸入表單以獲得「id」,我認爲你的意思是「name」,並且沒有除非您想要send an array of values,否則需要在表單中輸入多個具有相同名稱的輸入。

我不想走極端,談談AJAX是如何工作的在該網站上,因爲這完全是另外的事情,你似乎是擔心是預置的搜索按鈕。希望這可以幫助你弄清楚,GL。

編輯:我有一個艱難的時間搞清楚什麼你真的問,如果你正在試圖複製在該網站上的行爲,請告訴我們什麼服務器端語言是提供給你,如果你'使用或開放使用任何JavaScript庫,以及到目前爲止您嘗試過的。一個完整的勺子餵食教程真的超出了範圍,如果你分享你當前的嘗試代碼,你會得到更好,更明確的幫助。

0

如果你想從一個頁面值傳遞給另一個和處理它的客戶端,使用「獲取」的形式提交方法,並且使用方便的「GUP()」函數搶帕拉姆值。你可以得到more info on gup() here

function gup(name) 
{ 
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); 
    var regexS = "[\\?&]"+name+"=([^&#]*)"; 
    var regex = new RegExp(regexS); 
    var results = regex.exec(window.location.href); 
    if(results == null) 
    return ""; 
    else 
    return results[1]; 
} 

在你的初始頁面,您可以用類型=「隱藏」或只是擺脫可見輸入值(如您的樣品頁)使用的輸入。然後提交到您的結果頁面。由於像這樣的東西初始頁...

<form method="get" action="results.html"> 
    <input type="text" name="caratFrom" value="0.7" /> 
    <input type="submit"/> 
</form> 

...這裏的結果頁面示例用法:

var caratFrom = gup('caratFrom'); 
// etc. 

然後簡單地分配這些值,任何你想要的元素,例如輸入:

<!-- HTML --> 
    <input type="text" name="caratFromResult" value="" /> 

// Javascript 
    document.getElementById('caratFromResult').value = caratFrom;