我有以下问题......
我的应用程序使用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
答案 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然后提交表单,如果没有则显示一些错误......