2012-03-22 63 views
0

我有一个JavaScript的形式有点问题提交问题,这里是脚本JavaScript函数,并提交信息

function search(val1, val2) 
{ 
    var f=document.search_form; 
    $("#val1").val(val1); 
    $("#val2").val(val2); 
    f.submit(); 
} 

,这里是形式

<form name="search_form" action="val/search/" method="get"> 
    <input type="hidden" id="search_val1" name="search[val1]" value=""> 
    <input type="hidden" id="search_val2" name="search[val2]" value=""> 
...... 
    <input name="" type="button" value="Click" onclick="search({$smarty.const.VAL1}, {$smarty.const.VAL2});"> 
</form> 

我知道的发布形式是后“表单已提交”,我不知道按钮点击后还有哪些内容正在使用和处理。有人能告诉我更多这方面的情况吗?

+0

问题是什么? – Trevor 2012-03-22 02:07:01

+2

这个问题有点泛泛。你在问表单如何工作,或者PHP如何处理表单请求?作为一个非常基本的介绍,'form'元素中的'input','textareea'和'select'元素具有name属性,将会添加在您提交表单时发生的HTTP请求。这个请求然后由你的服务器处理并传递到你的代码的一部分,它处理'form'元素'action'属性中指定的动作。在你的情况下,这是'val/search /'。要了解更多信息,您必须阅读手册。 – Milimetric 2012-03-22 02:09:51

+0

谢谢,但我知道你已经说了什么,我正在寻找更多的东西。什么是内部提交和行动(控制器)中的用户定义函数将获取和处理请求,我想知道。 – 2012-03-22 02:20:19

回答

1

使用jQuery绑定整个表单提交,而不是onclick事件,这样你就不必担心用户按下文本字段中输入并提交表单

function search(val1, val2) 
{ 
    var f=document.search_form; 
    $("#val1").val(val1); 
    $("#val2").val(val2); 
    f.submit(); 
} 

$('form[name=search_form]').submit(function(e) { 
    search("{$smarty.const.VAL1}", "{$smarty.const.VAL2}"); 
}); 

上面运行之后,浏览器将调用正常提交到val/search/,因为您不告诉它停止默认事件(via e.preventDefault()

+0

谢谢你的好建议, – 2012-03-22 02:25:12