diff --git a/assets/js/frontend/checkout.js b/assets/js/frontend/checkout.js
index bb176647fa3..69ce21fe40b 100644
--- a/assets/js/frontend/checkout.js
+++ b/assets/js/frontend/checkout.js
@@ -366,7 +366,7 @@ jQuery(document).ready(function($) {
}
// Handle locale fields
- var locale_fields = $.parseJSON(wc_checkout_params.locale_fields);
+ var locale_fields = $.parseJSON( wc_checkout_params.locale_fields );
$.each( locale_fields, function( key, value ) {
@@ -402,11 +402,12 @@ jQuery(document).ready(function($) {
if ( locale['default'][key]['required'] == true ) {
if (field.find('label abbr').size()==0) field.find('label').append( required );
}
- if ( key !== 'state' && (typeof locale['default'][key]['hidden'] == 'undefined' || locale['default'][key]['hidden'] == false) ) {
- field.show();
- }
- if ( key !== 'state' && locale['default'][key]['hidden'] == true ) {
- field.hide();
+ if ( key !== 'state' ) {
+ if ( typeof locale['default'][key]['hidden'] == 'undefined' || locale['default'][key]['hidden'] == false ) {
+ field.show();
+ } else if ( locale['default'][key]['hidden'] == true ) {
+ field.hide().find('input').val('');
+ }
}
}
diff --git a/assets/js/frontend/checkout.min.js b/assets/js/frontend/checkout.min.js
index 54658d8947c..bf559537c7f 100644
--- a/assets/js/frontend/checkout.min.js
+++ b/assets/js/frontend/checkout.min.js
@@ -1 +1 @@
-jQuery(document).ready(function(e){function i(){r&&r.abort();var t=[];e("select#shipping_method, input[name^=shipping_method][type=radio]:checked, input[name^=shipping_method][type=hidden]").each(function(n,r){t[e(this).data("index")]=e(this).val()});var n=e("#order_review input[name=payment_method]:checked").val(),i=e("#billing_country").val(),s=e("#billing_state").val(),o=e("input#billing_postcode").val(),u=e("input#billing_city").val(),a=e("input#billing_address_1").val(),f=e("input#billing_address_2").val();if(e("#ship-to-different-address input").is(":checked")||e("#ship-to-different-address input").size()==0)var l=e("#shipping_country").val(),c=e("#shipping_state").val(),h=e("input#shipping_postcode").val(),p=e("input#shipping_city").val(),d=e("input#shipping_address_1").val(),v=e("input#shipping_address_2").val();else var l=i,c=s,h=o,p=u,d=a,v=f;e("#order_methods, #order_review").block({message:null,overlayCSS:{background:"#fff url("+wc_checkout_params.ajax_loader_url+") no-repeat center",backgroundSize:"16px 16px",opacity:.6}});var m={action:"woocommerce_update_order_review",security:wc_checkout_params.update_order_review_nonce,shipping_method:t,payment_method:n,country:i,state:s,postcode:o,city:u,address:a,address_2:f,s_country:l,s_state:c,s_postcode:h,s_city:p,s_address:d,s_address_2:v,post_data:e("form.checkout").serialize()};r=e.ajax({type:"POST",url:wc_checkout_params.ajax_url,data:m,success:function(t){if(t){var n=e(t);e("#order_review").html(n.html());e("body").trigger("updated_checkout")}}})}function s(){var t=!0;if(e(n).size()){$required_siblings=e(n).closest(".form-row").siblings(".address-field.validate-required");$required_siblings.size()&&$required_siblings.each(function(){if(e(this).find("input.input-text").val()==""||e(this).find("input.input-text").val()=="undefined")t=!1})}if(t){n=!1;e("body").trigger("update_checkout")}}var t,n=!1,r;e("body").bind("update_checkout",function(){clearTimeout(t);i()});e("p.password, form.login, .checkout_coupon, div.shipping_address").hide();e("input.show_password").change(function(){e("p.password").slideToggle()});e("a.showlogin").click(function(){e("form.login").slideToggle();return!1});e("a.showcoupon").click(function(){e(".checkout_coupon").slideToggle(400,function(){e("#coupon_code").focus()});return!1});e("#ship-to-different-address input").change(function(){e("div.shipping_address").hide();e(this).is(":checked")&&e("div.shipping_address").slideDown()}).change();if(wc_checkout_params.option_guest_checkout=="yes"){e("div.create-account").hide();e("input#createaccount").change(function(){e("div.create-account").hide();e(this).is(":checked")&&e("div.create-account").slideDown()}).change()}e("#order_review").on("click",".payment_methods input.input-radio",function(){if(e(".payment_methods input.input-radio").length>1){e("div.payment_box").filter(":visible").slideUp(250);e(this).is(":checked")&&e("div.payment_box."+e(this).attr("ID")).slideDown(250)}else e("div.payment_box").show()}).find("input[name=payment_method]:checked").click();e("form.checkout").on("input change","select#shipping_method, input[name^=shipping_method], #ship-to-different-address input, .update_totals_on_change select",function(){clearTimeout(t);n=!1;e("body").trigger("update_checkout")}).on("input change",".address-field input.input-text, .update_totals_on_change input.input-text",function(){n&&s()}).on("input change",".address-field select",function(){n=this;s()}).on("keydown",".address-field input.input-text, .update_totals_on_change input.input-text",function(e){var r=e.keyCode||e.which;if(r=="9")return;n=this;clearTimeout(t);t=setTimeout(s,"1000")}).on("blur input change",".input-text, select",function(){var t=e(this),n=t.closest(".form-row"),r=!0;if(n.is(".validate-required")&&t.val()==""){n.removeClass("woocommerce-validated").addClass("woocommerce-invalid woocommerce-invalid-required-field");r=!1}if(n.is(".validate-email")&&t.val()){var i=new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);if(!i.test(t.val())){n.removeClass("woocommerce-validated").addClass("woocommerce-invalid woocommerce-invalid-email");r=!1}}r&&n.removeClass("woocommerce-invalid woocommerce-invalid-required-field").addClass("woocommerce-validated")}).submit(function(){clearTimeout(t);var n=e(this);if(n.is(".processing"))return!1;if(n.triggerHandler("checkout_place_order")!==!1&&n.triggerHandler("checkout_place_order_"+e("#order_review input[name=payment_method]:checked").val())!==!1){n.addClass("processing");var r=n.data();r["blockUI.isBlocked"]!=1&&n.block({message:null,overlayCSS:{background:"#fff url("+wc_checkout_params.ajax_loader_url+") no-repeat center",backgroundSize:"16px 16px",opacity:.6}});e.ajax({type:"POST",url:wc_checkout_params.checkout_url,data:n.serialize(),success:function(t){var r="";try{t.indexOf("")>=0&&(t=t.split("")[1]);t.indexOf("")>=0&&(t=t.split("")[0]);r=e.parseJSON(t);if(r.result!="success")throw r.result=="failure"?"Result failure":"Invalid response";window.location=decodeURI(r.redirect)}catch(i){if(r.reload=="true"){window.location.reload();return}e(".woocommerce-error, .woocommerce-message").remove();r.messages?n.prepend(r.messages):n.prepend(t);n.removeClass("processing").unblock();n.find(".input-text, select").blur();e("html, body").animate({scrollTop:e("form.checkout").offset().top-100},1e3);r.refresh=="true"&&e("body").trigger("update_checkout");e("body").trigger("checkout_error")}},dataType:"html"})}return!1});e("form.checkout_coupon").submit(function(){var t=e(this);if(t.is(".processing"))return!1;t.addClass("processing").block({message:null,overlayCSS:{background:"#fff url("+wc_checkout_params.ajax_loader_url+") no-repeat center",backgroundSize:"16px 16px",opacity:.6}});var n={action:"woocommerce_apply_coupon",security:wc_checkout_params.apply_coupon_nonce,coupon_code:t.find("input[name=coupon_code]").val()};e.ajax({type:"POST",url:wc_checkout_params.ajax_url,data:n,success:function(n){e(".woocommerce-error, .woocommerce-message").remove();t.removeClass("processing").unblock();if(n){t.before(n);t.slideUp();e("body").trigger("update_checkout")}},dataType:"html"});return!1});var o=wc_checkout_params.locale.replace(/"/g,'"'),u=e.parseJSON(o),a=' *';e("body").bind("country_to_state_changing",function(t,n,r){var i=r;if(typeof u[n]!="undefined")var s=u[n];else var s=u["default"];var o={address_1:"#billing_address_1_field, #shipping_address_1_field",address_2:"#billing_address_2_field, #shipping_address_2_field",state:"#billing_state_field, #shipping_state_field",postcode:"#billing_postcode_field, #shipping_postcode_field",city:"#billing_city_field, #shipping_city_field"};e.each(o,function(e,t){var n=i.find(t);if(s[e]){s[e].label&&n.find("label").html(s[e].label);s[e].placeholder&&n.find("input").attr("placeholder",s[e].placeholder);n.find("label abbr").remove();typeof s[e]["required"]=="undefined"&&u["default"][e]["required"]==1?n.find("label").append(a):s[e]["required"]==1&&n.find("label").append(a);e!=="state"&&(s[e]["hidden"]==1?n.hide().find("input").val(""):n.show())}else if(u["default"][e]){u["default"][e]["required"]==1&&n.find("label abbr").size()==0&&n.find("label").append(a);e!=="state"&&(typeof u["default"][e]["hidden"]=="undefined"||u["default"][e]["hidden"]==0)&&n.show()}});var f=i.find("#billing_postcode_field, #shipping_postcode_field"),l=i.find("#billing_city_field, #shipping_city_field"),c=i.find("#billing_state_field, #shipping_state_field");if(!f.attr("data-o_class")){f.attr("data-o_class",f.attr("class"));l.attr("data-o_class",l.attr("class"));c.attr("data-o_class",c.attr("class"))}if(s.postcode_before_city){f.add(l).add(c).removeClass("form-row-first form-row-last").addClass("form-row-wide");f.insertBefore(l)}else{f.attr("class",f.attr("data-o_class"));l.attr("class",l.attr("data-o_class"));c.attr("class",c.attr("data-o_class"));f.insertAfter(c)}}).bind("init_checkout",function(){e("#billing_country, #shipping_country, .country_to_state").change();e("body").trigger("update_checkout")});wc_checkout_params.is_checkout==1&&e("body").trigger("init_checkout")});
\ No newline at end of file
+jQuery(document).ready(function(e){function i(){r&&r.abort();var t=[];e("select#shipping_method, input[name^=shipping_method][type=radio]:checked, input[name^=shipping_method][type=hidden]").each(function(n,r){t[e(this).data("index")]=e(this).val()});var n=e("#order_review input[name=payment_method]:checked").val(),i=e("#billing_country").val(),s=e("#billing_state").val(),o=e("input#billing_postcode").val(),u=e("input#billing_city").val(),a=e("input#billing_address_1").val(),f=e("input#billing_address_2").val();if(e("#ship-to-different-address input").is(":checked")||e("#ship-to-different-address input").size()==0)var l=e("#shipping_country").val(),c=e("#shipping_state").val(),h=e("input#shipping_postcode").val(),p=e("input#shipping_city").val(),d=e("input#shipping_address_1").val(),v=e("input#shipping_address_2").val();else var l=i,c=s,h=o,p=u,d=a,v=f;e("#order_methods, #order_review").block({message:null,overlayCSS:{background:"#fff url("+wc_checkout_params.ajax_loader_url+") no-repeat center",backgroundSize:"16px 16px",opacity:.6}});var m={action:"woocommerce_update_order_review",security:wc_checkout_params.update_order_review_nonce,shipping_method:t,payment_method:n,country:i,state:s,postcode:o,city:u,address:a,address_2:f,s_country:l,s_state:c,s_postcode:h,s_city:p,s_address:d,s_address_2:v,post_data:e("form.checkout").serialize()};r=e.ajax({type:"POST",url:wc_checkout_params.ajax_url,data:m,success:function(t){if(t){var n=e(t);e("#order_review").html(n.html());e("body").trigger("updated_checkout")}}})}function s(){var t=!0;if(e(n).size()){$required_siblings=e(n).closest(".form-row").siblings(".address-field.validate-required");$required_siblings.size()&&$required_siblings.each(function(){if(e(this).find("input.input-text").val()==""||e(this).find("input.input-text").val()=="undefined")t=!1})}if(t){n=!1;e("body").trigger("update_checkout")}}var t,n=!1,r;e("body").bind("update_checkout",function(){clearTimeout(t);i()});e("p.password, form.login, .checkout_coupon, div.shipping_address").hide();e("input.show_password").change(function(){e("p.password").slideToggle()});e("a.showlogin").click(function(){e("form.login").slideToggle();return!1});e("a.showcoupon").click(function(){e(".checkout_coupon").slideToggle(400,function(){e("#coupon_code").focus()});return!1});e("#ship-to-different-address input").change(function(){e("div.shipping_address").hide();e(this).is(":checked")&&e("div.shipping_address").slideDown()}).change();if(wc_checkout_params.option_guest_checkout=="yes"){e("div.create-account").hide();e("input#createaccount").change(function(){e("div.create-account").hide();e(this).is(":checked")&&e("div.create-account").slideDown()}).change()}e("#order_review").on("click",".payment_methods input.input-radio",function(){if(e(".payment_methods input.input-radio").length>1){e("div.payment_box").filter(":visible").slideUp(250);e(this).is(":checked")&&e("div.payment_box."+e(this).attr("ID")).slideDown(250)}else e("div.payment_box").show()}).find("input[name=payment_method]:checked").click();e("form.checkout").on("input change","select#shipping_method, input[name^=shipping_method], #ship-to-different-address input, .update_totals_on_change select",function(){clearTimeout(t);n=!1;e("body").trigger("update_checkout")}).on("input change",".address-field input.input-text, .update_totals_on_change input.input-text",function(){n&&s()}).on("input change",".address-field select",function(){n=this;s()}).on("keydown",".address-field input.input-text, .update_totals_on_change input.input-text",function(e){var r=e.keyCode||e.which;if(r=="9")return;n=this;clearTimeout(t);t=setTimeout(s,"1000")}).on("blur input change",".input-text, select",function(){var t=e(this),n=t.closest(".form-row"),r=!0;if(n.is(".validate-required")&&t.val()==""){n.removeClass("woocommerce-validated").addClass("woocommerce-invalid woocommerce-invalid-required-field");r=!1}if(n.is(".validate-email")&&t.val()){var i=new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);if(!i.test(t.val())){n.removeClass("woocommerce-validated").addClass("woocommerce-invalid woocommerce-invalid-email");r=!1}}r&&n.removeClass("woocommerce-invalid woocommerce-invalid-required-field").addClass("woocommerce-validated")}).submit(function(){clearTimeout(t);var n=e(this);if(n.is(".processing"))return!1;if(n.triggerHandler("checkout_place_order")!==!1&&n.triggerHandler("checkout_place_order_"+e("#order_review input[name=payment_method]:checked").val())!==!1){n.addClass("processing");var r=n.data();r["blockUI.isBlocked"]!=1&&n.block({message:null,overlayCSS:{background:"#fff url("+wc_checkout_params.ajax_loader_url+") no-repeat center",backgroundSize:"16px 16px",opacity:.6}});e.ajax({type:"POST",url:wc_checkout_params.checkout_url,data:n.serialize(),success:function(t){var r="";try{t.indexOf("")>=0&&(t=t.split("")[1]);t.indexOf("")>=0&&(t=t.split("")[0]);r=e.parseJSON(t);if(r.result!="success")throw r.result=="failure"?"Result failure":"Invalid response";window.location=decodeURI(r.redirect)}catch(i){if(r.reload=="true"){window.location.reload();return}e(".woocommerce-error, .woocommerce-message").remove();r.messages?n.prepend(r.messages):n.prepend(t);n.removeClass("processing").unblock();n.find(".input-text, select").blur();e("html, body").animate({scrollTop:e("form.checkout").offset().top-100},1e3);r.refresh=="true"&&e("body").trigger("update_checkout");e("body").trigger("checkout_error")}},dataType:"html"})}return!1});e("form.checkout_coupon").submit(function(){var t=e(this);if(t.is(".processing"))return!1;t.addClass("processing").block({message:null,overlayCSS:{background:"#fff url("+wc_checkout_params.ajax_loader_url+") no-repeat center",backgroundSize:"16px 16px",opacity:.6}});var n={action:"woocommerce_apply_coupon",security:wc_checkout_params.apply_coupon_nonce,coupon_code:t.find("input[name=coupon_code]").val()};e.ajax({type:"POST",url:wc_checkout_params.ajax_url,data:n,success:function(n){e(".woocommerce-error, .woocommerce-message").remove();t.removeClass("processing").unblock();if(n){t.before(n);t.slideUp();e("body").trigger("update_checkout")}},dataType:"html"});return!1});var o=wc_checkout_params.locale.replace(/"/g,'"'),u=e.parseJSON(o),a=' *';e("body").bind("country_to_state_changing",function(t,n,r){var i=r;if(typeof u[n]!="undefined")var s=u[n];else var s=u["default"];var o=e.parseJSON(wc_checkout_params.locale_fields);e.each(o,function(e,t){var n=i.find(t);if(s[e]){s[e].label&&n.find("label").html(s[e].label);s[e].placeholder&&n.find("input").attr("placeholder",s[e].placeholder);n.find("label abbr").remove();typeof s[e]["required"]=="undefined"&&u["default"][e]["required"]==1?n.find("label").append(a):s[e]["required"]==1&&n.find("label").append(a);e!=="state"&&(s[e]["hidden"]==1?n.hide().find("input").val(""):n.show())}else if(u["default"][e]){u["default"][e]["required"]==1&&n.find("label abbr").size()==0&&n.find("label").append(a);e!=="state"&&(typeof u["default"][e]["hidden"]=="undefined"||u["default"][e]["hidden"]==0?n.show():u["default"][e]["hidden"]==1&&n.hide().find("input").val(""))}});var f=i.find("#billing_postcode_field, #shipping_postcode_field"),l=i.find("#billing_city_field, #shipping_city_field"),c=i.find("#billing_state_field, #shipping_state_field");if(!f.attr("data-o_class")){f.attr("data-o_class",f.attr("class"));l.attr("data-o_class",l.attr("class"));c.attr("data-o_class",c.attr("class"))}if(s.postcode_before_city){f.add(l).add(c).removeClass("form-row-first form-row-last").addClass("form-row-wide");f.insertBefore(l)}else{f.attr("class",f.attr("data-o_class"));l.attr("class",l.attr("data-o_class"));c.attr("class",c.attr("data-o_class"));f.insertAfter(c)}}).bind("init_checkout",function(){e("#billing_country, #shipping_country, .country_to_state").change();e("body").trigger("update_checkout")});wc_checkout_params.is_checkout==1&&e("body").trigger("init_checkout")});
\ No newline at end of file
diff --git a/includes/class-wc-countries.php b/includes/class-wc-countries.php
index 2f7ac8c145d..0d97262fe6f 100644
--- a/includes/class-wc-countries.php
+++ b/includes/class-wc-countries.php
@@ -774,12 +774,12 @@ class WC_Countries {
}
/**
- * Get locale fields
+ * Get JS selectors for fields which are shown/hidden depending on the locale.
*
* @access public
* @return array
*/
- public function get_locale_fields() {
+ public function get_country_locale_field_selectors() {
$locale_fields = array (
'address_1' => '#billing_address_1_field, #shipping_address_1_field',
'address_2' => '#billing_address_2_field, #shipping_address_2_field',
@@ -788,7 +788,7 @@ class WC_Countries {
'city' => '#billing_city_field, #shipping_city_field'
);
- return apply_filters( 'woocommerce_locale_fields', $locale_fields );
+ return apply_filters( 'woocommerce_country_locale_field_selectors', $locale_fields );
}
/**
diff --git a/includes/class-wc-frontend-scripts.php b/includes/class-wc-frontend-scripts.php
index 0c51e7c38ba..d4279a2c404 100644
--- a/includes/class-wc-frontend-scripts.php
+++ b/includes/class-wc-frontend-scripts.php
@@ -120,7 +120,7 @@ class WC_Frontend_Scripts {
'checkout_url' => add_query_arg( 'action', 'woocommerce_checkout', WC()->ajax_url() ),
'is_checkout' => is_page( wc_get_page_id( 'checkout' ) ) && empty( $wp->query_vars['order-pay'] ) && ! isset( $wp->query_vars['order-received'] ) ? 1 : 0,
'locale' => json_encode( WC()->countries->get_country_locale() ),
- 'locale_fields' => json_encode( WC()->countries->get_locale_fields() )
+ 'locale_fields' => json_encode( WC()->countries->get_country_locale_field_selectors() )
) ) );
wp_localize_script( 'wc-cart', 'wc_cart_params', apply_filters( 'wc_cart_params', array(