0

以下に4種類の送信ボタンがあります。

<form id="QandA" action="register.php" method="post">

<input type='submit' name='submitImageBtn' class='sbtnimage' value='Upload' />

<input type='submit' name='submitVideoBtn' class='sbtnvideo' value='Upload' />

<input type='submit' name='submitAudioBtn' class='sbtnaudio' value='Upload' />

<input id="submitBtn" name="submitDetails" type="submit" value="Submit Details" />

</form>

これで、送信ボタンがクリックされた後に何が起こるかを処理することを想定した以下の関数があります。

    $(function() {
    myClickHandler=function(e)
        {
            if (!validation())
                return false;

            if (!confirm("Are you sure you want to Proceed?" + "\n" ))
                return false;

            $.ajax({
                url: "insertQuestion.php",
                data: $("#QandA").serialize(),
                async: false,
                type: "POST"
            });

            return true;
        };

$('#QandA').submit(myClickHandler);


    });

現時点では、上記のすべての送信ボタンが上記のイベントをトリガーします。id="submitBtn"送信ボタンで上記の機能をトリガーするだけです。他の送信ボタンがこの機能に触れないようにします。私の質問は、どうすればこれを行うことができますか?

アップデート:

$(function() {
$('#submitBtn').click(function(){
myClickHandler=function(e)
    {
        if (!validation())
            return false;

        if (!confirm("Are you sure you want to Proceed?" + "\n" ))
            return false;

        $.ajax({
            url: "insertQuestion.php",
            data: $("#QandA").serialize(),
            async: false,
            type: "POST"
        });

        return true;
    };
});    
});
4

1 に答える 1

2

コード内のボタンのどこにクリックハンドラーをアタッチしますか?

とにかく、jQueryの賢い点は、単純なハンドラーがすでに作成されていることです。次のような要素にクリックハンドラーをアタッチするだけです。

$(function() {
  $('#submitBtn').click(function(){
      //... Your code here
  });
});

jQuery click()

完全なコード:

$(function() {
  $('#submitBtn').click(function(){
    if (!validation())
      return false;

    if (!confirm("Are you sure you want to Proceed?" + "\n" ))
      return false;

    $.ajax({
        url: "insertQuestion.php",
        data: $("#QandA").serialize(),
        async: false,
        type: "POST"
    });
    return true;
  });
});

ajax呼び出しは非同期で実行されるためreturn true、ajax呼び出しが返される前に呼び出される可能性があることに注意してください。ajax()を参照してください。(成功関数を適用する必要があります)。

于 2012-12-29T01:28:39.193 に答える