Выделить выпадающий список с помощью массива с помощью jQuery
Я пытаюсь заполнить выпадающий список массивом с помощью jQuery.
Вот мой код:
// Add the list of numbers to the drop down here
var numbers[] = { 1, 2, 3, 4, 5};
$.each(numbers, function(val, text) {
$('#items').append(
$('<option></option>').val(val).html(text)
);
// END
Но я получаю сообщение об ошибке. Каждая функция - это то, что я получил от этого веб-сайта.
Разве это бомбардировка, потому что я использую одномерный массив? Я хочу, чтобы оба варианта и текст были одинаковыми.
Ответы
Ответ 1
Попробуйте для циклов:
var numbers = [1, 2, 3, 4, 5];
for (var i=0;i<numbers.length;i++){
$('<option/>').val(numbers[i]).html(numbers[i]).appendTo('#items');
}
Гораздо лучший подход:
var numbers = [1, 2, 3, 4, 5];
var option = '';
for (var i=0;i<numbers.length;i++){
option += '<option value="'+ numbers[i] + '">' + numbers[i] + '</option>';
}
$('#items').append(option);
Ответ 2
Объявление массива имеет неправильный синтаксис. Вместо этого попробуйте следующее:
var numbers = [ 1, 2, 3, 4, 5]
Элемент цикла кажется правильным
$.each(numbers, function(val, text) {
$('#items').append( $('<option></option>').val(val).html(text) )
}); // there was also a ) missing here
Поскольку @Reigel, похоже, добавляет немного большую производительность (на таких небольших массивах он не заметен)
Ответ 3
Вы также можете сделать это:
var list = $('#items')[0]; // HTMLSelectElement
$.each(numbers, function(index, text) {
list.options[list.options.length] = new Option(index, text);
});
Ответ 4
var qty = 5;
var option = '';
for (var i=1;i <= qty;i++){
option += '<option value="'+ i + '">' + i + '</option>';
}
$('#items').append(option);
Ответ 5
Решением является создание собственного плагина jquery, который принимает json-карту и заполняет ее выбором.
(function($) {
$.fn.fillValues = function(options) {
var settings = $.extend({
datas : null,
complete : null,
}, options);
this.each( function(){
var datas = settings.datas;
if(datas !=null) {
$(this).empty();
for(var key in datas){
$(this).append('<option value="'+key+'"+>'+datas[key]+'</option>');
}
}
if($.isFunction(settings.complete)){
settings.complete.call(this);
}
});
}
}(jQuery));
Вы можете вызвать его, выполнив следующие действия:
$("#select").fillValues({datas:your_map,});
Преимущества заключаются в том, что везде, где вы столкнетесь с одной и той же проблемой, вы просто вызываете
$("....").fillValues({datas:your_map,});
Et voila!
Вы можете добавлять функции в свой плагин, как вам нравится
Ответ 6
function validateForm(){
var success = true;
resetErrorMessages();
var myArray = [];
$(".linkedServiceDonationPurpose").each(function(){
myArray.push($(this).val())
});
$(".linkedServiceDonationPurpose").each(function(){
for ( var i = 0; i < myArray.length; i = i + 1 ) {
for ( var j = i+1; j < myArray.length; j = j + 1 )
if(myArray[i] == myArray[j] && $(this).val() == myArray[j]){
$(this).next( "div" ).html('Duplicate item selected');
success=false;
}
}
});
if (success) {
return true;
} else {
return false;
}
function resetErrorMessages() {
$(".error").each(function(){
$(this).html('');
});``
}
}
Ответ 7
Решением, которое я использовал, было создание javascript-функции, которая использует jquery:
Это приведет к заполнению выпадающего объекта на странице HTML. Сообщите мне, где это можно оптимизировать, но отлично работает, как есть.
function util_PopulateDropDownListAndSelect(sourceListObject, sourceListTextFieldName, targetDropDownName, valueToSelect)
{
var options = '';
// Create the list of HTML Options
for (i = 0; i < sourceListObject.List.length; i++)
{
options += "<option value='" + sourceListObject.List[i][sourceListTextFieldName] + "'>" + sourceListObject.List[i][sourceListTextFieldName] + "</option>\r\n";
}
// Assign the options to the HTML Select container
$('select#' + targetDropDownName)[0].innerHTML = options;
// Set the option to be Selected
$('#' + targetDropDownName).val(valueToSelect);
// Refresh the HTML Select so it displays the Selected option
$('#' + targetDropDownName).selectmenu('refresh')
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>