【问题标题】:Ajax with multiple submit buttons带有多个提交按钮的 Ajax
【发布时间】:2012-07-28 07:19:08
【问题描述】:

如何更改下面的代码,而不是带有提交按钮的文本输入类型,我想要多个提交按钮,每个按钮都有自己的唯一值?我尝试的一切都以提交的值未定义而告终。任何帮助都会很棒!

代码来源:Submit Search query & get Search result without refresh

<script type="text/javascript">
    $(function() {
        $("#lets_search").bind('submit',function() {
            var value = $('#str').val();
            $.post('db_query.php',{value:value}, function(data){
                $("#search_results").html(data);
            });
            return false;
        });
    });
</script>

<form id="lets_search" action="" >
    Search:<input type="text" name="str" id="str">
    <input type="submit" value="send" name="send" id="send">
</form>

【问题讨论】:

  • 试试 $('#send').click(function(){ // 代码在这里 });并 insted 的 type="submit" 把它当作 type="button"

标签: php javascript ajax jquery


【解决方案1】:

您可以添加多个提交按钮并附加到所有onclick 事件侦听器。单击按钮时 - 获取值并使用 POST 请求发送。

<script>
$(function(){
    $('input[type=submit]').click(function(){
        $.post('db_query.php', {value:$(this).val()}, function(data){
            $("#search_results").html(data);
        });
        return false;
    });
});
</script>
<form id="lets_search" action="">
    <input type="submit" name="button1" value="hi"/>
    <input type="submit" name="button2" value="bye"/>
</form>

【讨论】:

  • 这正是我正在寻找的用最少的额外输入,谢谢!
【解决方案2】:

如果您想使用多个提交按钮,您可以捕获点击事件并确定点击了哪个按钮。然后运行不同的 Ajax 提交。这也适用于enter 被击中。

//submit buttons
<form id="lets_search" action="" >
    Search:<input type="text" name="str" id="str" />
    <input type="submit" value="v1"/>
    <input type="submit" value="v2"/>
    //...more submit buttons
</form>    

//submit func
$(function() {
    $("#lets_search input[type=submit]").click(function() {
         switch  ($(this).val){
             case 'v1':...;
             case 'v2':...
         }
    });
});

【讨论】:

  • 为什么选择 e.target? $(this).val() 正如 sanjeev 已经指出的那样应该足够了
  • 实际上我认为您的解决方案会更好,因为您绑定的是按钮单击而不是表单提交
  • 谢谢,:),,,我没有考虑语法,只是为了演示。无论如何我都会更新它。
  • 这很好,但是,为什么不使用id 代替呢?因为使用val 会导致提交按钮显示:v1 和v2,这对最终用户没有任何意义。
【解决方案3】:

这是我的版本 - 现在看起来很像冰杰,因为它是在我测试他的版本时编写的

DEMO

<form id="lets_search" action="" >
Search:<input type="text" name="q" id="q">
<input type="submit" value="Google" name="send" id="google">
<input type="submit" value="Bing" name="send" id="bing">
</form>

$(function() {
  $("#lets_search input[type=submit]").click(function() {
    switch  ($(this).val()) {
        case "Bing" :
            $("#lets_search").attr("action","http://www.bing.com/search");
            break;

        case "Google":
            $("#lets_search").attr("action","https://www.google.com/search");
            break;
    }        
  });
});

【讨论】:

    【解决方案4】:

    在这里,我更喜欢 Vamsi 的解决方案 n 为什么不是 Sanjeev mk?

    就更喜欢的解决方案给出一些额外的想法。

    案例:如果有多个提交按钮

    如果用户在文本字段中并点击回车,系统将假定第一个提交按钮被点击。

    所以,在这里,最好不要多次提交 最终用户观点的按钮

    【讨论】:

    • 请在投票时提供解释,否则会浪费
    • 我没有投反对票,但我建议您将其转换为类似“请注意,如果有多个提交按钮:如果用户在文本字段中并点击回车,系统将假设第一个提交按钮被点击。”因为你的答案有点漫无边际,而不是答案
    • ok.iam 在这里通过案例研究答案来回答。并不总是只有答案就是答案。
    • 在这种情况下,您只会被否决 - 所以这是您自己的选择
    【解决方案5】:

    表单中可以有多个提交按钮,没问题。它们可能具有相同的名称、类型等,但只是为它们分配不同的值。就像提交按钮 1 可以有 value="hi" 并且 Button 2 可以有 value="bye"。

    然后当为按钮调用动作函数时,你在进入函数时所要做的就是检查:$(this).val

    HTML:
    
    <input type="submit" name="button1" value="hi"/>
    <input type="submit" name="button2" value="bye"/>
    
    jQuery:
    $(function() {
        $("#lets_search").bind('submit',function() {
            var value = $(this).val();
    
            if(value == "hi")
                do_something;
            else
                do_something_else;
        });
    });
    

    【讨论】:

    • 表单提交时会返回val吗?我认为您需要改为绑定点击
    猜你喜欢
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    • 2014-11-25
    • 2012-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多