#javascript #jquery
#javascript #jquery
Вопрос:
У меня есть следующее поле выбора
<select name="loc_id_1" id="loc_id_1">
<option value="PLS" selected="selected">-- PLEASE SELECT --</option>
<option value="NEW">-- ADD NEW --</option>
<option value="1">Smith Company</option>
<option value="6">Jones Company</option>
<option value="23">Wright Company</option>
</select>
На странице loc_id_2, loc_id_3 и т. Д. Их Несколько, Все с разной информацией. Я использую следующее, чтобы обнаружить изменение в любом из них.
$("[id^=loc_id_]").change(function(){
/// my magic code
var lc_id = $(this).attr('id');
my_function(lc_id,data1,data2);
});
Эта часть отлично работает. Проблема, с которой я сталкиваюсь, заключается в том, что в рамках этого кода я вызываю функцию, которая может обновлять данные в измененном поле выбора. поэтому я использую функцию удаления jquery для обновления поля выбора
function my_function(id,d,f) {
var sel = $("#" id);
sel.find('option[value!="NEW"] option[value!="PLS"]').remove();
// ajax code that calls database to append the other entries to the selectbox
}
Проблема в том, что это удаляет опцию «ДОБАВИТЬ НОВЫЙ», но оставляет «ПОЖАЛУЙСТА, ВЫБЕРИТЕ», но мои параметры из базы данных добавляются просто отлично.
Есть идеи, как это исправить…
Комментарии:
1. Несколько ошибок
}));
,myfunction
—my_function
2. Шаунак, я не копировал и не вставлял свой точный код, просто набирал идею, стоящую за ним. Но спасибо, что указали.
Ответ №1:
Ваш селектор будет искать descendant
внутри элемента option, который имеет value
NEW.Try,
sel.find('option[value!="NEW"][value!="PLS"]').remove();
ДЕМОНСТРАЦИЯ
Комментарии:
1. Это удаляет все значения до того, как мой ajax повторно добавит компании.
2. После обнаружения ошибки в моем HTML-коде это решение работает. Большое спасибо. Я также недатировал jsfiddle: jsfiddle.net/e6EB3/4
3. Спасибо Раджапрабху Аравиндасаму, это было полезно для меня.
4. Просто хотел сказать спасибо! Я не знал, как это будет сделано, и это действительно спасло меня! 🙂
Ответ №2:
Комментарии:
1.
gt()
всегда требуется индекс ..op
пытается удалитьelement
с помощьюvalue
.2. @Girish: как вы можете ясно видеть, задача может быть достигнута просто с помощью изменения селектора. тогда зачем усложнять это??
3. хорошо, но в случае, если он хочет удалить значение 2
value="6"
value="1"
и у него нет индекса значений, тогдаgt()
функция будет работать?4. @Girish: не будь мамой. он этого не хочет. тогда я бы не предоставил упрощенное решение.
5. Я успешно использовал селектор:gt при первом вызове, но дополнительные вызовы процедуры (т. Е. Я выбираю другой вариант) приводили к удалению параметров, которые я хотел сохранить. Догадываюсь, потому что я добавляю данные в поле выбора.