2014-12-03 5 views
-1

Моя проблема проста, но я не могу ее исправить, в основном нужно фиксировать значения поля «select multiple». Код является сущностью.Capture multiples values ​​select multiple with javascript

Gist Code

<script type="text/javascrit"> 
function newsletter_send(name, email, category register) { 
    jQuery.ajax({ 
     type: "POST", 
     url: alm_localize.ajaxurl, 
     data: { 
      action  : "newsletter_register", /// function for register data in DB. 
      user_name : name, 
      user_email : email, 
      user_category : category, // Here you can find the values of the select 
      user_register : register 
     }, 
     success: function(data, textStatus, XMLHttpRequest) { 
      if(email !== "" && name !== "" && register !== "") { 
       $("#newsletter_form").find("#feedback").html("<span class='success'Seu email foi registrado com sucesso!</span>"); 
      } 
      $("#newsletter_form").find(".form_loading").removeClass("show"); 
     // _newsletter_reset(); // reset values form 
     }, 
     error: function(MLHttpRequest, textStatus, errorThrown) { 
      $("#newsletter_form").find("#contactResponse").html("<span class='error'>Algo deu errado, tente novamente mais tarde.</span>"); 
      $("#newsletter_form").find(".form_loading").removeClass("show"); 
     } 
    }); 
} 
</script> 

<!-- THIS HTML --> 

<select id="user_category" name="user_category[]" class="user_category" multiple=""> 
    <option selected="selected">Selecione uma categoria</option> 
    <option value="4">Notícias</option> 
    <option value="6">Santa Catarina</option> 
    <option value="5">Saúde</option> 
    <option value="1">Sem categoria</option> 
</select> 

<?php 

// yeah, i use wordpress :p 

/* 
* Function for register data in mysql 
*/ 

function newsletter_register() { 

    $user_email = $_POST["user_email"]; 
    $user_name = $_POST["user_name"]; 
    $user_category = implode(',', $_POST["user_category"]); 
    $user_register = $_POST["user_register"]; 

    global $wpdb; 

    if(
     isset($user_name) 
     || isset($user_email) 
     || isset($user_category) 
    ) { 
     $wpdb->insert($wpdb->prefix . "newsletter", array(
      "user_name" => $user_name, 
      "user_email" => $user_email, 
      "user_category" => $user_category, 
      "user_register" => $user_register 
     )); 
    } 
} 

add_action("wp_ajax_nopriv_newsletter_register", "newsletter_register"); 
add_action("wp_ajax_newsletter_register", "newsletter_register"); 
?> 

оправданий для простоты.

ответ

0

$('select').val() вернет массив, если select является multiple.

От val() API Docs:

В случае выбора элементов, она возвращает NULL, когда не выбран ни один вариант, и массив, содержащий значение каждого выбранного параметра, если существует, по крайней мере, одно и то можно выбрать более потому что присутствует множественный атрибут.

Пример:

$(function() { 
 
    $('textarea').val(JSON.stringify($('select').val())); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<select multiple> 
 
    <option value="1" selected>Item 1</option> 
 
    <option value="2">Item 2</option> 
 
    <option value="3" selected>Item 3</option> 
 
    <option value="4">Item 4</option> 
 
    <option value="5">Item 5</option> 
 
    <option value="6" selected>Item 6</option> 
 
</select> 
 
<br> 
 
<br> 
 
<textarea></textarea>