Как удалить все параметры в окне выбора, а затем добавить один вариант и выбрать его с помощью jQuery?

Мое обходное решение:

create or replace type split_tbl as table of varchar(32767);
/

create or replace function split
(
  p_list varchar2,
  p_del varchar2 := ','
) return split_tbl pipelined
is
  l_idx    pls_integer;
  l_list    varchar2(32767) := p_list;
  l_value    varchar2(32767);
begin
  loop
    l_idx := instr(l_list,p_del);
    if l_idx > 0 then
      pipe row(substr(l_list,1,l_idx-1));
      l_list := substr(l_list,l_idx+length(p_del));
    else
      pipe row(l_list);
      exit;
    end if;
  end loop;
  return;
end split;
/

Теперь вы можете использовать одну переменную для получения некоторых значений в таблице:

select * from table(split('one,two,three'))
  one
  two
  three

select * from TABLE1 where COL1 in (select * from table(split('value1,value2')))
  value1 AAA
  value2 BBB

Итак, подготовленный оператор может быть:

  "select * from TABLE where COL in (select * from table(split(?)))"

С уважением,

Хавьер Ибанез

986
задан Martin Smith 13 April 2013 в 11:49
поделиться

6 ответов

$('#mySelect')
    .find('option')
    .remove()
    .end()
    .append('<option value="whatever">text</option>')
    .val('whatever')
;
1599
ответ дан nickf 13 April 2013 в 11:49
поделиться

Не уверенный точно, под чем Вы подразумеваете, "добавляют один и выбирают его", так как это будет выбрано по умолчанию так или иначе. Но, если бы необходимо было добавить больше чем один, это имело бы больше смысла. Как насчет чего-то как:

$('select').children().remove();
$('select').append('<option id="foo">foo</option>');
$('#foo').focus();

Ответ, чтобы "ОТРЕДАКТИРОВАТЬ" : можно ли разъяснить то, что Вы подразумеваете "Под этим избранным полем, заполняется рядом переключателей"? <select> элемент не может (по закону) содержать <input type="radio"> элементы.

28
ответ дан Heemanshu Bhalla 13 April 2013 в 11:49
поделиться

Благодаря ответам я получил, я смог создать что-то как следующее, которое удовлетворяет моим потребностям. Мой вопрос был несколько неоднозначен. Спасибо за развитие. Моя заключительная проблема была решена включением "выбранного" в опции, которую я хотел выбранный.

$(function() {
  $('#mySelect').children().remove().end().append('<option selected value="One">One option</option>') ; // clear the select box, then add one option which is selected
  $("input[name='myRadio']").filter( "[value='1']" ).attr( "checked", "checked" ); // select radio button with value 1
  // Bind click event to each radio button.
  $("input[name='myRadio']").bind("click",
                                  function() {
    switch(this.value) {
      case "1":
        $('#mySelect').find('option').remove().end().append('<option selected value="One">One option</option>') ;
        break ;
      case "2":
        $('#mySelect').find('option').remove() ;
        var items = ["Item1", "Item2", "Item3"] ; // Set locally for demo
        var options = '' ;
        for (var i = 0; i < items.length; i++) {
          if (i==0) {
            options += '<option selected value="' + items[i] + '">' + items[i] + '</option>';
          }
          else {
            options += '<option value="' + items[i] + '">' + items[i] + '</option>';
          }
        }
        $('#mySelect').html(options);   // Populate select box with array
        break ;
    } // Switch end
  } // Bind function end
                                 ); // bind end
}); // Event listener end
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label>One<input  name="myRadio" type="radio" value="1"  /></label>
<label>Two<input name="myRadio"  type="radio" value="2" /></label>
<select id="mySelect" size="9"></select>
10
ответ дан Al Foиce ѫ 13 April 2013 в 11:49
поделиться
$('#mySelect')
    .empty()
    .append('<option value="whatever">text</option>')
    .find('option:first')
    .attr("selected","selected")
;
26
ответ дан 19 December 2019 в 20:20
поделиться
$('#mySelect')
    .empty()
    .append('<option selected="selected" value="whatever">text</option>')
;
685
ответ дан 19 December 2019 в 20:20
поделиться

У меня была ошибка в IE7 (работает нормально в IE6), где использование вышеуказанных методов jQuery очистит , выберите в DOM, но не на экране. Используя панель инструментов IE разработчиков IE, я мог бы подтвердить, что выбрано , но имело новые элементы, но визуально выбирают . Выбор все еще показал старые предметы - даже если вы не могли их выбрать.

Исправление состояла в том, чтобы использовать стандартные методы / палаты / палаты DOM (в качестве исходного плаката), а не jQuery - все еще используя jQuery, чтобы добавить параметры.

$('#mySelect')[0].options.length = 0;
76
ответ дан 19 December 2019 в 20:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: