2016-01-27 106 views
1

我正在使用beforeonload函數,但我希望當用戶提交表單beforeunload不應該工作。這裏是我的代碼,它在Chrome中運行良好,但在Firefox中無法運行。off()不在firefox中工作,但在鉻中工作

window.form_submitted = ''; 

jQuery(document).ready(function() { 
    jQuery(window).on('beforeunload', function() { 
     if (form_submitted == '') { 
      return "Are you sure to leave that page"; 
     } 
    }); 
}); 

jQuery('#form').on('submit', function (e) { 
    e.preventDefault(); 
    jQuery(window).off('beforeunload'); 
    form_submitted = 1; 
    site_redirect(resp.payment_url); 
} 

return false; 
}); 
+0

然後,您需要提供更多信息。 「這不起作用」沒有幫助。你有沒有使用斷點調試代碼?事件處理程序是否被調用?什麼'site_redirect'做?爲什麼'form_submitted'和空刺,然後設置爲'1'?爲什麼你同時使用'form_submitted'和'.off()'? – RoToRa

回答

0

你有幾個語法問題,你必須把domready中處理程序中的submit塊,否則JS會嘗試將事件綁定到其尚未在DOM中存在的元素。另請注意,您可以在表單提交時解除綁定beforeunload事件的情況下刪除全局標誌變量。試試這個:

jQuery(document).ready(function($) { 
    $(window).on('beforeunload', function() { 
     return "Are you sure to leave that page"; 
    }); 

    $('#form').on('submit', function (e) { 
     e.preventDefault(); 
     $(window).off('beforeunload'); 
     site_redirect(resp.payment_url); 
    }); 
}); 

還要注意的是做一個重定向當表單提交是(假設這是什麼site_redirect功能是做),那麼表單的內容會丟失。

相關問題