如何禁用select2下拉菜单

时间:2016-01-09 00:27:16

标签: javascript jquery wordpress woocommerce select2

我想禁用woocommerce结帐页面上的select2下拉列表。我希望用户无法通过结帐页面上的下拉列表更改国家/地区

我不想隐藏字段(国家/地区),但只想禁用下拉列表

这是html查找下拉列表的方式

<div class="select2-drop select2-display-none select2-with-searchbox select2-drop-active" style="left: 92.5px; width: 556px; top: 668px; bottom: auto; display: block;" id="select2-drop">   

    <div class="select2-search">      
        <label for="s2id_autogen1_search" class="select2-offscreen">Country *</label>       
        <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" class="select2-input" role="combobox" aria-expanded="true" aria-autocomplete="list" aria-owns="select2-results-1" id="s2id_autogen1_search" placeholder="" aria-activedescendant="select2-result-label-7">   
    </div>   
    <ul class="select2-results" role="listbox" id="select2-results-1">
        <li class="select2-results-dept-0 select2-result select2-result-selectable select2-highlighted" role="presentation">
            <div class="select2-result-label" id="select2-result-label-7" role="option">
            <span class="select2-match">
            </span>
            India
            </div>
        </li>
        <li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation">
            <div class="select2-result-label" id="select2-result-label-8" role="option">
            <span class="select2-match"></span>
            United Kingdom (UK)
            </div>
        </li>
    </ul>
</div>

请帮忙

3 个答案:

答案 0 :(得分:1)

你可以这样做......

function rei_woocommerce_form_field_args($args, $key, $value) {

    if ($key == 'billing_country') {
        $args['custom_attributes'] = array('disabled'=>'disabled');

    }
    return $args;
}
add_filter('woocommerce_form_field_args', 'rei_woocommerce_form_field_args', 10, 3);

将其添加到您的functions.php ...

我希望您意识到禁用的表单字段不会包含在POST / GET数据中。

如果你真的需要这个,我们可以添加额外的隐藏输入,它们具有相同的名称和值。现在一起,它应该是这样的..

function rei_woocommerce_form_field_args($args, $key, $value) {

    if (($key == 'billing_country') && is_checkout()) {
        $args['custom_attributes'] = array('disabled'=>'disabled');
    }
    return $args;
}
add_filter('woocommerce_form_field_args', 'rei_woocommerce_form_field_args', 10, 3);

function rei_woocommerce_form_field_country($field, $key, $args, $value){

    if (($key == 'billing_country') && is_checkout()) {
        $field .= '<input type="hidden" name="' . esc_attr( $key ) . '" value="' . esc_attr( $value ) . '" />';
    }
    return $field;
}

add_filter('woocommerce_form_field_country','rei_woocommerce_form_field_country', 10, 4);

另一个注意事项是,即使您可以禁用选择,任何拥有该知识的人都可以轻松地在浏览器中删除已禁用的属性。

答案 1 :(得分:0)

您可以使用两种解决方法

  1. 在国家/地区字段上方添加透明图层,并为其提供更高的z-index。
  2. 使用JQuery并返回false;当调用onClick和onSelect事件时。

答案 2 :(得分:-3)

在输入中添加disabled属性,如下所示。

<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" class="select2-input" role="combobox" aria-expanded="true" aria-autocomplete="list" aria-owns="select2-results-1" id="s2id_autogen1_search" placeholder="" aria-activedescendant="select2-result-label-7" disabled>