2011-05-01 154 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;