jQuery内部提交功能不起作用

时间:2011-05-21 01:30:08

标签: jquery forms submit onchange

我对这个jQuery代码有疑问。它没有按预期工作:

$('#select_dropdown').change ( function(){
    $('#form_to_submit').submit( function(event){
        $.post("process.php", { name: "John" },
    function(data) {
        alert("Data Loaded: " + data);
    });
    });
});

然而,这有效:

$('#select_dropdown').change ( function(){
    $('#form_to_submit').submit();
});

我想知道为什么提交的内部函数不起作用。 当用户从下拉列表中选择值时,必须提交表单。第二组代码 工作,但如果我添加一个内部函数来提交,它不会。

基本上,我想在用户选择下拉列表后进行一些ajax调用。

2 个答案:

答案 0 :(得分:0)

第一个代码是为selector $('#list_count')创建一个事件处理程序,很可能是表单元素。第二个代码是在该元素上调用submit方法。当您使用任何方法提交表单时会触发第一个,但它本身不会提交表单。你想做什么?

修改

你想这样做吗

$('#select_dropdown').change ( function(){
    $.post("process.php", { name: "John" }, function(data) {
        alert("Data Loaded: " + data);
    });
});

答案 1 :(得分:0)

以下是您可以做的事情:

$("#form_to_submit").submit(function(){
   //do your post stuff here
});

$('#select_dropdown').change ( function(){
   $("#form_to_submit").submit()
});

我在做的是:

  1. 定义form_to_submit
  2. 的提交事件的处理程序
  3. 当用户在select_dropdown上进行选择时定义操纵者,即使在表单上也会调用提交。
  4. =================

    如果你有代码

    $('#list_per_page').change ( function(){
        $('#list_count').submit( function(event){
            alert('It Works!');
        });
    });
    

       $('#list_count').submit();
    
    然后它会起作用。原因是要显示“It Works”,您需要触发提交事件。

    第一个块是在更改事件发生时向submit事件添加处理程序。因此,当#list_per_page更改时,会将提交事件处理程序添加到#list_count元素。

    第二个块就是在#list_count上发送提交;因此,调用您在第一个块中添加的处理程序。

    请记住,evens是异步发生的,好像你希望你的代码顺序运行。

    上面的代码不能解决您的问题;它仅用于演示目的。请告诉我们您想要达到的目标,然后人们可以建议一些最佳实践来帮助您: - )