2015-03-16 2 views
0

Я пытаюсь добавить и удалить опцию выбора на основе другого поля. На этом сайте есть много ответов о добавлении и удалении опции, но мне нужно добавить только этот параметр, если он еще не существует. До сих пор у меня есть:Javascript добавляет и удаляет опцию выбора

function setCustomerOptions() { 
    var customers = getField('select', 'Customer'); 
    if (getField('select', 'Campaign Type').value == 'Game' || getField('select', 'Campaign Type').value == 'Innovation') { 
     for (var i=0; i<customers.length; i++) { 
      if (customers.options[i].text == 'N/A') { 
       customers.remove(i); 
      } 
     } 
    } else { 
     if ($.inArray('N/A', customers.options.text) == -1) { 
      var opt = document.createElement('option'); 
      opt.value = 'N/A'; 
      opt.innerHTML = 'N/A'; 
      customers.appendChild(opt); 
     } 
    } 
} 

Это успешно добавляет и удаляет опцию «N/A», однако, если я выбираю что-нибудь, кроме моих начальных условий я получаю добавил дополнительный «N/A». Я думал, что JQuery inArray может помочь, но нет.

Как узнать, существует ли опция выбора?

+0

Можете ли вы поместить свой код в пример JSFiddle? и показать определение getField, так как я не вижу его –

+0

Вот ссылка на аналогичный вопрос: http://stackoverflow.com/questions/646317/how-can-i-check-whether-a-option -readyready-in-select-by-jquery –

+0

Я добавил JSFiddle: https://jsfiddle.net/imonkey/5u5hp7z2/4/, где он фактически работает. Моя база кода - Sharepoint 2007, поэтому я использую getField, чтобы сделать выбор по названию, а не id. Могут быть некоторые другие функции Sharepoint, которые вызывают добавление/N/A/несколько раз? – sansSpoon

ответ

0

Я не мог получить любой вариант Jquery работать [спасибо отыскания подобного вопроса Steven], чтобы в конечном итоге делает его длинную руку с простым JavaScript:

function setCustomerOptions() { 
    var customers = getField('select', 'Customer'); 
    if (getField('select', 'Campaign Type').value == 'Game' || getField('select', 'Campaign Type').value == 'Innovation') { 
     for (var i=0; i<customers.length; i++) { 
      if (customers.options[i].text == 'N/A') { 
       customers.remove(i); 
      } 
     } 
    } else { 
     for (var i=0; i<customers.length; ++i) { 
      if (customers.options[i].text == "N/A") { 
       var optexist = 1; 
       break; 
      } else { 
       var optexist = 0; 
      } 
     } 
     if (optexist == 0) { 
      var opt = document.createElement('option'); 
      opt.value = 'N/A'; 
      opt.innerHTML = 'N/A'; 
      customers.appendChild(opt); 
     } 
    } 
} 
0

Попробуйте это ..

<form> 
    <select id="mySelect" size="8"> 
    <option>Apple</option> 
    <option>Pear</option> 
    <option>Banana</option> 
    <option>Orange</option> 
    </select> 
</form> 
<br> 


<button type="button" onclick="myFunction()">Insert option</button> 
<button onclick="myremove()">Remove</button> 
<script> 
function myFunction() { 
    var x = document.getElementById("mySelect"); 
    var option = document.createElement("option"); 
    option.text = "Kiwi"; 
    x.add(option); 
} 
function myremove() { 
    var x = document.getElementById("mySelect"); 
    x.remove(x.selectedIndex); 
} 
</script> 
+0

Это не проверка новой опции, чтобы увидеть, существует ли опция. ** "только добавьте опцию, если она еще не существует" ** – NewToJS

Смежные вопросы