0

我用这个选择显示柜台

<section class="shipping-calculator-form-shortcode" >
    <p class="form-row form-row-wide"  id="calc_shipping_country_field">
        <label >Shipping options to</label>
        <select onchange="myFunctionShipping(this)" name="calc_shipping_country" id="calc_shipping_country" class="ss-woo-shipping-calculator" rel="ss-woo-shipping-calculator">
            <option value="1"><?php _e( 'Select a country&hellip;', 'woocommerce' ); ?></option>
            <?php
                foreach ( WC()->countries->get_shipping_countries() as $key => $value )
                    echo '<option value="' . esc_attr( $key ) . '"' . selected( WC()->customer->get_shipping_country(), esc_attr( $key ), false ) . '>' . esc_html( $value ) . '</option>';
            ?>
        </select>
    </p>
    <span id="ss-woo-shipping-calculator-loading" style="display:none"><img src='<?php echo plugins_url( '/default.gif', __FILE__ ) ?>' /></span>
    </p>

    <?php wp_nonce_field( 'woocommerce-cart' ); ?>
            <div id="ss-woo-shipping-result">

            </div>
</section>

然后通过javascript代码检索它的运输选项

<script type="text/javascript">
var $s = jQuery.noConflict();
function myFunctionShipping(item) {
$s(document).ready(function($) {
$("select").change(function(){
    var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
    var country = item.value;
    $("#ss-woo-shipping-calculator-loading").show();
    var data = {'action': 'ss_woo_shipping_calculator','country': country};
    $.post("<?php echo get_home_url(); ?>", data, function(response) {
        $("#ss-woo-shipping-calculator-loading").hide();
        response = JSON.parse(response);
        if(response.result == 1){
            $("#ss-woo-shipping-result").html(response.message);


        }else{
            $("#ss-woo-shipping-result").html("");
        }

        return false;
    });
return false;});       
});
}

问题是: - 如果任何其他选择控件也发生更改,它也会触发它仅在更改选择两次后触发(页面加载后)

4

1 回答 1

0

它“说”该操作适用于任何选择 $("select").change()。您可以更改为仅使用所选 ID 选择限制操作,例如

$("#calc_shipping_country").change(function()

或者您可以选择使用选择类名。

编辑。

我的错误,我没有弄清楚该动作是由函数调用而不是选择动作。尝试完全删除 $("select").change(function() 包装并使其看起来像这样

<script type="text/javascript">
var $s = jQuery.noConflict();
function myFunctionShipping(item) {
$s(document).ready(function($) {
    var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
    var country = item.value;
    $("#ss-woo-shipping-calculator-loading").show();
    var data = {'action': 'ss_woo_shipping_calculator','country': country};
    $.post("<?php echo get_home_url(); ?>", data, function(response) {
        $("#ss-woo-shipping-calculator-loading").hide();
        response = JSON.parse(response);
        if(response.result == 1){
            $("#ss-woo-shipping-result").html(response.message);


        }else{
            $("#ss-woo-shipping-result").html("");
        }

        return false;
    });
return false;     
});
}
</script>
于 2017-10-27T22:48:53.597 回答