선택 상자의 모든 옵션을 제거한 다음 하나의 옵션을 추가하고 jQuery로 선택하는 방법은 무엇입니까?
코어 jQuery를 사용하여 선택 상자의 모든 옵션을 제거한 다음 하나의 옵션을 추가하고 선택하는 방법은 무엇입니까?
내 선택 상자는 다음과 같습니다.
<Select id="mySelect" size="9"> </Select>
편집 : 다음 코드는 연결에 도움이되었습니다. 그러나 (Internet Explorer에서) .val('whatever')
추가 된 옵션을 선택하지 않았습니다. ( .append
와 모두 동일한 '값'을 사용했습니다 .val
.)
$('#mySelect').find('option').remove().end()
.append('<option value="whatever">text</option>').val('whatever');
편집 :이 코드를 모방하기 위해 페이지 / 양식이 재설정 될 때마다 다음 코드를 사용합니다. 이 선택 상자는 라디오 단추 세트로 채워집니다. .focus()
더 가까웠지만 옵션은 에서처럼 선택되지 않았습니다 .selected= "true"
. 내 기존 코드에는 문제가 없습니다. jQuery를 배우려고합니다.
var mySelect = document.getElementById('mySelect');
mySelect.options.length = 0;
mySelect.options[0] = new Option ("Foo (only choice)", "Foo");
mySelect.options[0].selected="true";
편집 : 선택한 답변이 내가 필요한 것에 가깝습니다. 이것은 나를 위해 일했습니다.
$('#mySelect').children().remove().end()
.append('<option selected value="whatever">text</option>') ;
하지만 두 가지 대답 모두 저를 최종 해결책으로 이끌었습니다 ..
$('#mySelect')
.find('option')
.remove()
.end()
.append('<option value="whatever">text</option>')
.val('whatever')
;
$('#mySelect')
.empty()
.append('<option selected="selected" value="whatever">text</option>')
;
일반 자바 스크립트를 사용하지 않는 이유는 무엇입니까?
document.getElementById("selectID").options.length = 0;
위의 jQuery 메서드를 사용 하면 DOM 에서 선택 이 지워지지 만 화면에는 나타나지 않는 IE7 (IE6에서 잘 작동)에 버그가있었습니다 . IE 개발자 도구 모음을 사용하여 선택 항목이 지워졌고 새 항목 이 있는지 확인할 수 있었지만 시각적으로 선택 항목은 여전히 이전 항목을 표시했지만 선택할 수는 없었습니다.
수정 사항은 jQuery가 아닌 표준 DOM 메서드 / 속성 (포스터 원본과 마찬가지로)을 사용하여 jQuery를 사용하여 옵션을 추가하는 것이 었습니다.
$('#mySelect')[0].options.length = 0;
첫 번째 옵션 (일반적으로 '항목을 선택하세요'옵션)을 제외한 모든 옵션을 선택 항목에서 제거하는 것이 목표 인 경우 다음을 사용할 수 있습니다.
$('#mySelect').find('option:not(:first)').remove();
어쨌든 기본적으로 선택되므로 "추가하고 선택"이 의미하는 바를 정확히 알 수 없습니다. 그러나 두 개 이상을 추가하면 더 의미가 있습니다. 다음과 같은 것은 어떻습니까?
$('select').children().remove();
$('select').append('<option id="foo">foo</option>');
$('#foo').focus();
"편집"에 대한 응답 : "이 선택 상자는 라디오 단추 세트로 채워져 있습니다."의 의미를 명확히 할 수 있습니까? <select>
요소는 (법적으로) 포함 할 수 없습니다 <input type="radio">
요소를.
$('#mySelect')
.empty()
.append('<option value="whatever">text</option>')
.find('option:first')
.attr("selected","selected")
;
$("#control").html("<option selected=\"selected\">The Option...</option>");
제가받은 답변 덕분에 다음과 같이 제 요구에 맞는 것을 만들 수있었습니다. 내 질문은 다소 모호했습니다. 후속 조치 해 주셔서 감사합니다. 마지막 문제는 내가 선택한 옵션에 "선택됨"을 포함하여 해결되었습니다.
$(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>
먼저 첫 번째 옵션을 제외하고 기존 옵션을 모두 지 웁니다 (--Select--)
하나씩 루프를 사용하여 새 옵션 값 추가
$('#ddlCustomer').find('option:not(:first)').remove(); for (var i = 0; i < oResult.length; i++) { $("#ddlCustomer").append(new Option(oResult[i].CustomerName, oResult[i].CustomerID + '/' + oResult[i].ID)); }
html을 새 데이터로 변경하는 것은 어떻습니까?
$('#mySelect').html('<option value="whatever">text</option>');
Another example:
$('#mySelect').html('
<option value="1" selected>text1</option>
<option value="2">text2</option>
<option value="3" disabled>text3</option>
');
Another way:
$('#select').empty().append($('<option>').text('---------').attr('value',''));
Under this link, there are good practices https://api.jquery.com/select/
I've found on the net something like below. With a thousands of options like in my situation this is a lot faster than .empty()
or .find().remove()
from jQuery.
var ClearOptionsFast = function(id) {
var selectObj = document.getElementById(id);
var selectParentNode = selectObj.parentNode;
var newSelectObj = selectObj.cloneNode(false); // Make a shallow copy
selectParentNode.replaceChild(newSelectObj, selectObj);
return newSelectObj;
}
More info here.
Building on mauretto's answer, this is a little easier to read and understand:
$('#mySelect').find('option').not(':first').remove();
To remove all the options except one with a specific value, you can use this:
$('#mySelect').find('option').not('[value=123]').remove();
This would be better if the option to be added was already there.
$("#id option").remove();
$("#id").append('<option value="testValue" >TestText</option>');
The first line of code will remove all the options of a select box as no option find criteria has been mentioned.
The second line of code will add the Option with the specified value("testValue") and Text("TestText").
Uses the jquery prop() to clear the selected option
$('#mySelect option:selected').prop('selected', false);
This will replace your existing mySelect with a new mySelect.
$('#mySelect').replaceWith('<Select id="mySelect" size="9">
<option value="whatever" selected="selected" >text</option>
</Select>');
You can do simply by replacing html
$('#mySelect')
.html('<option value="whatever" selected>text</option>')
.trigger('change');
Hope it will work
$('#myselect').find('option').remove()
.append($('<option></option>').val('value1').html('option1'));
- save the option values to be appended in an object
- clear existing options in the select tag
- iterate the list object and append the contents to the intended select tag
var listToAppend = {'':'Select Vehicle','mc': 'Motor Cyle', 'tr': 'Tricycle'};
$('#selectID').empty();
$.each(listToAppend, function(val, text) {
$('#selectID').append( new Option(text,val) );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
I saw this code in select2 https://select2.org/programmatic-control/add-select-clear-items#clearing-selections
$('#mySelect).val(null).trigger('change');
Just one line to remove all options from the select tag and after you can add any options then make second line to add options.
$('.ddlsl').empty();
$('.ddlsl').append(new Option('Select all', 'all'));
var select = $('#mySelect');
select.find('option').remove().end()
.append($('<option/>').val('').text('Select'));
var data = [{"id":1,"title":"Option one"}, {"id":2,"title":"Option two"}];
for(var i in data) {
var d = data[i];
var option = $('<option/>').val(d.id).text(d.title);
select.append(option);
}
select.val('');
'Nice programing' 카테고리의 다른 글
SQL IN 절 매개 변수화 (0) | 2020.09.27 |
---|---|
함수 실행에 걸리는 시간을 측정하는 방법 (0) | 2020.09.27 |
AngularJS 컨트롤러의 'this'vs $ scope (0) | 2020.09.27 |
주어진 커밋을 포함하는 분기를 나열하는 방법은 무엇입니까? (0) | 2020.09.27 |
Android로 파일을 다운로드하고 ProgressDialog에 진행률 표시 (0) | 2020.09.27 |