diff --git a/assets/js/admin/settings-views-html-settings-tax.js b/assets/js/admin/settings-views-html-settings-tax.js
index bf66bc215a6..88c028ba8c8 100644
--- a/assets/js/admin/settings-views-html-settings-tax.js
+++ b/assets/js/admin/settings-views-html-settings-tax.js
@@ -61,6 +61,24 @@
},
initialize : function() {
this.qty_pages = Math.ceil( this.model.get( 'rates' ).length / this.per_page );
+ this.listenTo( this.model, 'change', this.setUnloadConfirmation );
+ this.listenTo( this.model, 'saved', this.clearUnloadConfirmation );
+ window.addEventListener( 'beforeunload', this.unloadConfirmation );
+ },
+ setUnloadConfirmation : function() {
+ console.log( data.strings.unload_confirmation_msg );
+ this.needsUnloadConfirm = true;
+ },
+ clearUnloadConfirmation : function() {
+ this.needsUnloadConfirm = false;
+ },
+ unloadConfirmation : function(e) {
+ if ( this.needsUnloadConfirm ) {
+ e.returnValue = data.strings.unload_confirmation_msg;
+ window.event.returnValue = data.strings.unload_confirmation_msg;
+ return data.strings.unload_confirmation_msg;
+ }
+ return null;
},
sanitizePage : function( page_num ) {
page_num = parseInt( page_num, 10 );
diff --git a/includes/admin/settings/class-wc-settings-tax.php b/includes/admin/settings/class-wc-settings-tax.php
index 946fa1518ef..857558a1958 100644
--- a/includes/admin/settings/class-wc-settings-tax.php
+++ b/includes/admin/settings/class-wc-settings-tax.php
@@ -156,6 +156,7 @@ class WC_Settings_Tax extends WC_Settings_Page {
'states' => $states,
'strings' => array(
'no_rows_selected' => __( 'No row(s) selected', 'woocommerce' ),
+ 'unload_confirmation_msg' => __( 'Your changed data will be lost if you leave this page without saving.', 'woocommerce' ),
'csv_data_cols' => array(
__( 'Country Code', 'woocommerce' ),
__( 'State Code', 'woocommerce' ),