1

我有以下问题...

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

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

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

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

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

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

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

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

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

还需要提到的是,由于 php 函数从数据库中的大表中选择了正确的参数,因此无法将所需的操作参数传递给 jQuery 事件处理程序。如果这是可能的,那么很容易从 jQuery 函数中更改 action 参数......

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

解决方案也可以是(以编程方式)从 jQuery 事件处理程序中再单击一次按钮,但我不知道该怎么做......

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

先感谢您。果酱

4

1 回答 1

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,如果不是则提交表单,然后显示一些错误......

于 2013-02-27T01:13:14.520 回答