2014-09-25 3 views
5

Это работает с Google Chrome и IE, но не с Firefox. Для некоторых реалов Chrome и IE позволяют назначать пустое значение, хотя оно не является частью раскрывающегося списка.Как назначить пустое значение для выбора раскрывающегося списка?

document.getElementById('dropdownid').value = ""; 

Обратите внимание, что у меня есть доступ к jQuery, но я не делаю то, что хотел.

$("#dropdownid").val(""); 

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

Любая идея?

+0

Можете ли вы разместить HTML-код, с которым вы используете это? – j08691

+0

@briosheje это не div. предположим, что это выпадающий (select) control – ove

+0

Если вы можете скопировать некоторый пример 'select' output из работающего веб-сайта, в JSfiddle, что помогло бы макетировать решение и протестировать в нескольких браузерах :) Использовать параметр проверки Chrome чтобы скопировать HTML :) –

ответ

0

Не могли бы вы добавить пустой параметр к выбору перед его настройкой?

var jqDropdown = $('#dropdownid'); 
if (!jqDropdown.find('option[value=""]').length) { 
    jqDropdown.prepend($('<option value=""></option>')); 
} 
jqDropdown.val(""); 
+0

Наверное, 'preend', хотя, как вы хотите, чтобы пустые первые в списке :) –

+0

Downvotes без причин плохо. Вы должны чувствовать себя плохо. – Andy

+0

Это проголосовало немного несправедливо. Это может быть не самый лучший вариант, но это правильный ответ для списка без начальных пустых опций (кроме необходимости повторного использования селектора и не выполнения '=== 0'). –

5

selectedIndex до -1 очищает выбор.

document.getElementById('dropdownid').selectedIndex = -1; 
+0

Это правильный ответ, несмотря на то, что думает автор вопроса, установив значение в пустую строку, фактически не делает значение выбора пустой строки. Все, что он делает, сбрасывается на исходное значение по умолчанию ... – Mike

+0

Невыполненный, но в соответствии с [документацией MDN] (https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement), 'selectedIndex 'доступен только для чтения для' HTMLSelectElements'. – Andy

+0

@ Andy протестирован и работает в Chrome и последнем Firefox – Tetaxa

0

Вы пытались отменить выбор в списке?

$("#dropdownid option").prop("selected", false);

+1

Не тестировалось, но это не сработало бы, поскольку нет пустого варианта. Это просто установит первый элемент в списке как выбранный. – Andy

+0

@Sumit не работает! – ove

+1

@overule view Ответ Tetaxa, он правильный. – Mike

2

Просто измените selectedIndex. Например:

$(function(){ 
 
    $dropdown = $("#dropdownid"); 
 
    alert($dropdown.val()); //alerts "2" 
 
    $dropdown[0].selectedIndex = -1; //or document.getElementById('dropdownid').selectedIndex = -1; 
 
    alert($dropdown.val()) //alerts null 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<select id="dropdownid"> 
 
    <option value="1">1</option> 
 
    <option value="2" selected="selected">2</option> 
 
    <option value="3">3</option> 
 
</select>

http://jsfiddle.net/kxoytdg8/

0

лучший способ заключается в использовании $("#dropdownid").html(''); это делает нулевое значение.

+0

Это единственный ответ, который работает, когда выбор не имеет пустой опции и в тех случаях, когда такая опция не нужна. Единственный другой способ - добавить пустой параметр, как это сделал Энди. Помните, что это решение полностью удаляет «параметры», но последующие вызовы JS/Ajax могут при необходимости заменять выбранный. – JosephK

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