2015-04-29 3 views
1

У меня есть следующий код в моем списке:Как я могу скрыть возможность выбора по его текстовому значению?

<select id="state_code" name="account[state_code]"> 
    <option value="">Select State</option> 
    <option value="AL">Alabama</option> 
    <option value="AK">Alaska</option> 
    <option value="AZ">Arizona</option> 
    <option value="AR">Arkansas</option> 
    <option value="AE">Armed Forces</option> 
    <option value="AA">Armed Forces</option> 
    <option value="AP">Armed Forces</option> 
    <option value="AS">translation missing: en.world.us.as.name</option> 
    <option value="DC">translation missing: en.world.us.dc.name</option> 
    <option value="GU">translation missing: en.world.us.gu.name</option> 
    <option value="MP">translation missing: en.world.us.mp.name</option> 
    <option value="PR">translation missing: en.world.us.pr.name</option> 
    <option value="UM">translation missing: en.world.us.um.name</option> 
    <option value="VI">translation missing: en.world.us.vi.name</option> 
</select> 

Я хочу, чтобы скрыть все варианты, в тексте начинается с translation missing: en.world.us. Я пробовал это ниже, но не работал.

var ab = "translation missing: en.world" 
$('#state_code').find('option[text^="' + ab + '"]').hide(); 

Пожалуйста, помогите мне. Заранее спасибо.

ответ

3

Текст элемента не является атрибутом, поэтому селектор атрибутов не будет работать в этом случае, как вы обнаружили. Вместо этого вы можете использовать комбинацию регулярного выражения и функции filter() для достижения этой цели:

$('#state_code option').filter(function() { 
    return /^translation missing:/i.test($(this).text()); 
}).hide(); 

Example fiddle

Я хочу, чтобы скрыть теперь оба перевод отсутствует: en.world.us и Вооруженные силы

Для этого вы можете использовать «или» символ в регулярных выражениях: |. То, что вы пробовали, не будет работать, поскольку логический поток ошибочен из-за двух операторов return. Попробуйте это:

$('#state_code option').filter(function() { 
    return /^translation missing:|armed forces/i.test($(this).text()); 
}).hide(); 

Example fiddle

+0

Я хочу, чтобы скрыть теперь оба ** перевод отсутствует:. En.world.us ** и ** вооруженных сил ** поэтому для этого я написал '$ («# state_code опция») фильтр (функция() { return/^ translation missing: /i.test ($ (this) .text()); return/^ Вооруженные силы /i.test ($ (this) .text());}). Hide(); 'но не работает – railslearner

+0

Я обновил свой ответ для вас. –

+0

thanx alot это работает :) – railslearner

1

text не является атрибутом, HTMLOptionElementtext объект имеет свойство . Вы можете использовать методы filter и String.prototype.indexOf для фильтрации соответствующих параметров.

$('#state_code').children().filter(function() { 
    return this.text.indexOf(ab) === 0; 
}).hide(); 
Смежные вопросы