0

次のようなjQuery関数があります。

$(function(){
    function unshareDialog(event) {
        $( "#dialog-confirm" ).dialog({
            resizable: false,
            height:200,
            width: 365,
            modal: true,
            buttons: {
              "Unshare": function() {
                  $('#unshare_form').submit();
              },
              Cancel: function() {
                $( this ).dialog( "close" );
              }
            }
          });
          return false;
    }
    $('#unshare_entire_file').click(unshareDialog);
});

私のフォームには、次のような 2 つの送信ボタンがあります。

<form action="/unshare/" id="unshare_form" method="post">
    <input type="submit" value="Unshare" name="unshare_to_user" id="unshare_to_user" />
    <input type="submit" value="Unshare" id="unshare_entire_file" 
 name="unshare_entire_file" />
</form>

サーバーでは、次のようにしています:

if request.POST.get('unshare_entire_file'):
    ...unshare for file
else
     ..unshare for user

しかし、これを使用してフォームを送信するとjQuery機能しないことがわかりました。どの送信ボタンがクリックされたかを知り、それに応じて処理したい。どうやってやるの?

4

1 に答える 1

0

このようなものはどうですか?

$(function () {
    function unshareDialog(event, elem) {
        event.preventDefault();
        var input = $("<input>").attr("type", "hidden").attr("name", elem.attr("id")).val(1);
        $("#unshare_form").prepend(input);
        $("#dialog-confirm").dialog({
            resizable: false,
            height: 200,
            width: 365,
            modal: true,
            buttons: {
                "Unshare": function () {
                    $("#unshare_form").submit();
                },
                Cancel: function () {
                    $(this).dialog("close");
                }
            }
        });
        return false;
    }
    $('#unshare_entire_file,#unshare_to_user').click(function (e) {
        unshareDialog(e, $(this));
    });
});

明らかに最適ではありませんが、うまくいくはずです

于 2013-06-24T11:44:21.077 に答える