从smarty模板表单发布操作

时间:2013-02-27 01:09:57

标签: php jquery forms post smarty

我有以下问题......

我的应用程序使用php,smarty模板和jQuery。

在smarty模板中,使用POST方法定义了一个表单。 表单的action参数定义如下:

action = {if isset($ search_place)} {link-> somePhpFunction($ search_place){/ if}

...因为我需要根据POSTED参数更改操作。

带有“search_place”名称的输入(文本)在表单内定义。

提交按钮链接到jQuery函数,因为我需要在客户端执行某些操作(值检查,自动完成等)。

点击按钮时,我需要
问题是,当我通过jQuery按钮发布表单时,表单将不会采用

单击该按钮时,将调用jQuery处理程序,执行某些检查/更正,然后显示包含该表单的页面。

问题是,在从表单定义动作参数之前,未知的search_place变量和根本不调用php函数。 我还尝试在按钮处理程序中设置一个cookie,并将表单操作设置为{$ smarty.cookies.search_place}值,但问题变为另一个 - 表单始终执行前一个按钮单击的操作,以便它需要单击两次按钮才能获得正确的结果。

还有必要提一下,没有办法将所需的action参数传递给jQuery事件处理程序,因为php函数从数据库中的大表中选择了正确的参数。如果可以,那么可以很容易地从jQuery函数中更改action参数...

我知道的唯一方法是使用AJAX来获取正确的参数并从按钮事件处理程序中分配正确的操作参数,但它不适合我,因为我的许多网站访问者都没有启用浏览器javascipt。

解决方案也可以执行(programmaticaly)再次单击jQuery事件处理程序中的按钮,但我不知道该怎么做...

任何帮助或想法如何解决这个问题将不胜感激......

提前谢谢你。 JAM

1 个答案:

答案 0 :(得分:0)

尝试以下方法:

<form onsubmit="return validationFunction()">

并让此函数验证数据,如果正确则返回true,否则返回false。

现在为js。不要打电话给

$("#someForm").submit();

改为使用:

if(validationFunction()){
   $("#someForm").submit();
}

<强>更新

最后,如果您的validationFunction将执行一些服务器端工作

然后改为像

这样的变量

var formSubmitted = false;

然后onSubmit返回false;并将formSubmitted设置为true,并进行ajax调用,当ajax调用完成后,检查formSubmitted是否为true然后提交表单,如果没有则显示一些错误......