2

ページに 2 つのコンテナーがあります。

<div id="foto_1"><span>Change foto</span><img src="" /></div>
<div id="foto_2"><span>Change foto</span><img src="" /></div>

そして、フォームプラグイン .ajaxSubmit() を自分の関数にラップしました:

function imgUpload(div_id) {

 $('#myimgForm').submit(function(e){

    e.preventDefault();

    $(this).ajaxSubmit(
    {
        target:  '',
        success: function(data) {  

        var new_data = data.split('.');
        var path = new_data[0]+'_sm.'+new_data[1];
        $('#foto_'+div_id+' img').attr('src', '');
        $('#foto_'+div_id+' img').attr('src', path);

        },
        resetForm: true

    }); 
    return false;
  });
}

次に、関数を呼び出します。

$('#foto_1 span').click(function(){

    imgUpload(1);
});

$('#foto_2 span').click(function(){

    imgUpload(2);
});

したがって、問題は、2 番目のコンテナーをクリックすると、.ajaxsubmit() が 2 回実行されるという事実にあります。どういう理由ですか?クリックする前に unbind('live') を試しました。単純な bind() と単純な click() も試しました - 変更はありません...助けてください

html フォームは次のとおりです。

<form method="post" enctype="multipart/form-data"  id="myimgForm" name="myimgForm" action="/save_image_form.php"> 
    <div id="imgForm_div">
        <div id="img_input"><input type="file" name="caret" /></div>
        <input type="button" id="cancel_img" value="Cancel" />
        <input type="submit" value="Upload" />
    </div>
</form>
4

1 に答える 1

1

試しましたか

$('#myimgForm').submit(function(e){

    e.preventDefault();

    $(this).ajaxSubmit(
    {

live()非推奨であることにも注意してください。

于 2013-01-08T13:51:58.073 に答える