如果值不等于某个数字,请动态删除选择选项

时间:2014-01-09 14:06:57

标签: jquery html wordpress

我需要删除下拉列表中没有特定值的所有选项。这是我的代码: `

      <select name="worker">        
        <option value="0">John Doe</option>
        <option value="5">Jim Smith</option>
        <option value="6">Jane Doe</option>    
      </select>

`

我在wordpress中,基本上需要说,“如果当前用户是5(Jim Smith),那么只能在下拉列表中显示他。任何帮助都会非常感激。

以下是生成下拉列表的php代码:

/* Workers */

    $workers = $wpdb->get_results("SELECT * FROM " . $this->workers_table . " " );

    $html .= '<label>';

    $html .= '<span class="title">'.__('Provider', 'appointments'). '</span>';

    $html .= '<select name="worker">';

    // Always add an "Our staff" field

    $html .= '<option value="0">'. __('No specific provider', 'appointments') . '</option>';

    if ( $workers ) {

        foreach ( $workers as $worker ) {

            if ( $app->worker == $worker->ID ) {

                $sel = ' selected="selected"';

            }

            else

                $sel = '';

            $html .= '<option value="'.$worker->ID.'"'.$sel.'>'. $this->get_worker_name( $worker->ID, false ) . '</option>';

        }

    }

    $html .= '</select>';

    $html .= '</label>';

2 个答案:

答案 0 :(得分:2)

您可以使用jquery remove()方法使用attribute not equal selector删除所有与某个值不匹配的项目

var removeItemVal="5"; 

$('#selectId').find('option[value!="'+removeItemVal+'"]').remove();

JSFIDDLE DEMO

答案 1 :(得分:2)

如果您不使用jQuery,可以使用querySelector()选择select元素,使用.removeChild()删除脏option元素。

var userId = 5;
[].slice.call( document.querySelector('select[name="worker"]').children )
        .forEach(function(elem) {
            if ( elem.value != userId ) 
                elem.parentNode.removeChild(elem); 
        });