javascript - 表单提交的通用jquery函数

标签 javascript jquery

我用 PHP/JavaScript 开发了这个小型选项卡式系统。

对于表单提交,我将 JQuery 函数绑定(bind)到“提交”事件,该事件将 Ajax 查询发送到服务器,避免重新加载页面(并丢失其他选项卡)。我为每种表单编写了一个函数,但意识到它们是相同的(获取输入、发送 Ajax 查询、显示返回消息),因此我决定创建一个通用 jquery 函数,其中包含定义每种表单的参数)。

我有这个功能:

function submit_search(entity){
        $('#'+entity.name+'_searchform').submit(function(){
            var url = public_path+entity.name+'/search';
            var key = $('#'+entity.name+'_search_key').val();

            $.ajax({
                type: 'POST',
                url: url,
                data: {search_key: key},
                success: entity.submit_search(result)
            }); 

            return false;
    });
}

其中entity是一个JS对象,其中包含实体的名称和我要执行的成功函数。该函数是用脚本编写的,在加载主页时加载一次。当加载选项卡时,我只需使用实际实体调用 submit_search() 即可。

这对我来说似乎合乎逻辑。但这不起作用。问题是 jquery 无法识别元素,例如,在 var key = $('#'+entity.name+'_search_key').val(); 之后,key 为 null。

我做错了什么?

最佳答案

您的成功函数将在请求之前执行

  $.ajax({
            type: 'POST',
            url: url,
            data: {search_key: key},
            success: *entity.submit_search(result)*
        })

我想submit_search不会返回指向函数的指针,所以 您需要将指针传递给submit_search

  $.ajax({
            type: 'POST',
            url: url,
            data: {search_key: key},
            success: *entity.submit_search*
        })

关于重新识别元素 - 确保您编写了正确的选择器。尝试在浏览器的调试/监视工具中对预期的表达进行硬编码,并检查是否正常,例如

$('#EntityNameValue_search_key').length > 0

关于javascript - 表单提交的通用jquery函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12640784/

相关文章:

javascript - Sprite 不能从 three.js 场景中删除?

javascript - 给 Chai/Mocha 一个应该包含的键的部分列表

javascript - iPad 不会触发从垂直到水平的调整大小事件?

javascript - 如何使用 HTML5/CSS/Javascript 制作嵌套 Accordion ?

jquery - 图片库 OnClick 问题

jquery - 如果最小宽度为 900px,则更改状态

jquery - 重新访问页面时监听器重复 - Jquery Mobile

javascript - 在Firefox附加SDK扩展中的“onInstalled”上执行脚本

jquery - 单击时停止 css 动画闪烁图像

javascript - 通过 Outlook 发送电子邮件