发送表单的按钮值

时间:2009-08-19 05:02:52

标签: jquery

用户点击任一个具有相同名称的按钮=“响应”不同的值“确认”和“忽略”时发布的用户数据。我的问题是,当我使用jquery时,按钮的值不会发布,如下面的代码所示。有办法解决这个问题吗?

    $("[name='respond']").live('click', function() { 
            $.ajax({
                type: "POST",
                data: $(this).closest('#REQUESTFORM').serialize(),
                url: "content/requests/index.cs.asp?Process=RespondRequests", 
                success: function(output) { 
                alert(output);
                //$(this).closest('#REQUESTFORM').html(output);
                },
                error: function(xhr){
                    alert('Request Status: ' + xhr.status + ' Status Text: ' + xhr.statusText + ' ' + xhr.responseText);
                }

            }); 
    }); 
                            <div class="tools">
                                <form method="post" action="content/requests/index.cs.asp?Process=RespondRequests" id="REQUESTFORM">

                                        <input type="hidden" name="REQUESTID" value="<%=objRequests("REQUESTID")%>">   
                                        <input type="hidden" name="BYID" value="<%=objRequests("BYID")%>">   
                                        <input type="hidden" name="TOID" value="<%=objRequests("TOID")%>">   
                                        <input type="button" name="respond" value="Confirm" class="btn_confirm" />
                                        <input type="button" name="respond" value="Ignore" class="btn_ignore" />

                                </form>  

3 个答案:

答案 0 :(得分:0)

这样做

data: 'respond='+$(this).attr('value')+$('#REQUESTFORM').serialize(),

答案 1 :(得分:0)

我的猜测是因为这些是(A)“按钮”输入而不是“提交”输入,和/或因为(B)你的onclick功能(特别是可能与live()结合)正在捕捉帖子而不是允许“名称”被视为表单数据的一部分。

一个想法是,你可以添加一些代码,以确保它确实成为表单数据的一部分。考虑在HTML中添加一个隐藏的输入:

<input type="hidden" name="TheActualRespondField" value="" />

然后,在你的“点击”功能javascript中,

$("[name='respond']").live('click', function() { 
    // register the correct button-click-value:
    $('[name="TheActualRespondField"]').val($(this).val());
    // now do your ajax form post:
    $.ajax({
        type: "POST"  // etc...
    });
}
祝你好运!
-f!

答案 2 :(得分:0)

在表单中放置一个隐藏字段id="action",并在单击其中一个按钮时设置其值。所以JS将是:

$("[name='respond']").live('click', function() { 
    $('#REQUESTFORM #action').val($(this).val());
    $.ajax({
          type: "POST",
              data: $(this).closest('#REQUESTFORM').serialize(),
              url: "content/requests/index.cs.asp?Process=RespondRequests", 
              success: function(output) { 
              alert(output);
              //$(this).closest('#REQUESTFORM').html(output);
          },
          error: function(xhr){
                  alert('Request Status: ' + xhr.status + ' Status Text: ' + xhr.statusText + ' ' + xhr.responseText);
          }
      }); 
}); 

HTML:

<form method="post" action="content/requests/index.cs.asp?Process=RespondRequests" id="REQUESTFORM">
    <input type="hidden" name="REQUESTID" value="<%=objRequests("REQUESTID")%>">   
    <input type="hidden" name="BYID" value="<%=objRequests("BYID")%>">   
    <input type="hidden" name="TOID" value="<%=objRequests("TOID")%>">   
    <input type="button" name="respond" value="Confirm" class="btn_confirm" />
    <input type="button" name="respond" value="Ignore" class="btn_ignore" />
    <input type="hidden" id="action" value="" />
</form>