2014-12-03 3 views
0

У меня есть несколько ящиков с одним и тем же классом. Но когда я использую метод push массива jQuery, чтобы получить все выбранные значения в этом классе в виде массива, он просто добавляет запятую (,) перед каждым значением. Он работает плавниками со статическими значениями. Проблема заключается в том, когда я добавляю значения для выбора поля из массива PHP. Вот как мой выбор коробки код выглядитjQuery push array inserts comma

<select name="add_purch_item1" class="add_purch_item"> 
    <option value="">----select----</option> 
    <?php if(!empty($pro_list1)) { foreach($pro_list1 as $products) { ?> 
     <option value="<?php echo $products->sku; ?>"><?php echo $products->product_name; ?></option> 
    <?php } } ?> 
</select> 

<select name="add_purch_item2" class="add_purch_item"> 
    <option value="">----select----</option> 
    <?php if(!empty($pro_list2)) { foreach($pro_list2 as $products) { ?> 
     <option value="<?php echo $products->sku; ?>"><?php echo $products->product_name; ?></option> 
    <?php } } ?> 
</select> 

И я добавил функцию щелчка на кнопке. При щелчке он получает все выбранные значения в виде массива. вот мой код jQuery,

var selected = []; 

    $('.add_purch_item').each(function() { 
     selected.push($(this).val()); 
    }); 

    alert(selected); 

И когда я пытаюсь выбрать коробку со статическими значениями, она дает правильный результат. See here an example

Я получаю этот неправильный вывод в динамических значениях. Эта нежелательная запятая - это моя проблема. Как этого избежать? Я тоже попытался заменить строку. Wrong Output

+0

Можете ли вы опубликовать полный код. Скрипка, которая работает, не очень полезна для диагностики проблемы. –

+0

Единственная причина, по которой я могу видеть, может быть пустым значением –

+0

Что вы подразумеваете под полным кодом? Какой код? –

ответ

4

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

$('.add_purch_item').each(function() { 
    var val = $(this).val(); 
    if (val) { 
     selected.push(val); 
    } 
}); 

See updated fiddle.

+0

Большое спасибо @Hiral –

+0

@Corner welcome :) – Hiral

1

Это происходит, когда у вас есть пустые отдельные элементы (где не выбрано значение). Поэтому, когда вы создаете массив, игнорируйте элементы выбора, где нет значения.

$(document).on("click", '#submit', function() { 
 
    var selected = []; 
 

 
    var selected = $('.add_purch_item').map(function() { 
 
    return $(this).val() || undefined; 
 
    }).get(); 
 

 
    alert(selected); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<select name="name1" class="add_purch_item"> 
 
    <option value="" selected="selected">-----</option> 
 
    <option value="1">value1</option> 
 
    <option value="2">value2</option> 
 
</select> 
 

 
<select name="name2" class="add_purch_item"> 
 
    <option value="" selected="selected">-----</option> 
 
    <option value="1">value1</option> 
 
    <option value="2">value2</option> 
 
</select> 
 
<button id="submit">Check</button>

+0

Спасибо за помощь !!! –