2014-10-31 20 views
0

Это, вероятно, довольно простое, но мне интересно, как игнорировать значение из option select, если она равна определенного значения, например, у меня есть этот выберитеигнорировать значение выбора опции JQuery

<select> 
    <option value="">All</option> 
    <option value=".Dog">Dog</option> 
    <option value=".Cat">Cat</option> 
</select> 

$('select').on('change', function() { 
var animal_type = $('option:selected').text(); 
}); 

Так что, если " Все»выбрано Я не хочу, чтобы присвоить что-либо переменную animal_type, так что в следующем Аяксе после animal_type игнорируются и не послали в качестве параметра

$.ajax({ 
    type: 'POST', 
    url: '/public/rehomed', 
    data: { 
    animal_type: animal_type, #so if ALL selected this should not be passed through 
    rehomed: false, 
    } 
}); 

Причина, по которой я собираюсь удалить переменную animal_type из сообщения ajax, - это параметры сообщения, которые делают SQL-запрос на стороне сервера для меня в rails.

+0

не смог просто установить 'animal_type' в' null' или '0 ', а затем на боковой стороне сервера вы можете поймать его там? – chriz

+2

Я предполагаю, что вы хотите вообще избегать вызова ajax? Просто поставьте **, если ** вокруг $ .ajax .... – dawez

+0

извините, ребята, я обновил свой вопрос, почему я пытаюсь это сделать? – Richlewis

ответ

1

Добавить условие, чтобы проверить значение выбранного параметра, прежде чем вы выполните AJAX.

$('select').on('change', function() { 
    var animal_type = $('option:selected').text(); 
    var data_send = {animal_type: animal_type, rehomed: false,}; 
    if(animal_type != "All"){ 
     data_send = {rehomed: false,}; 
    } 
    $.ajax({ 
     type: 'POST', 
     url: '/public/rehomed', 
     data: data_send, 
    }); 
}); 
1

вы можете сделать что-то вроде этого:

var animal_type = $('option:selected').text() == "All" ? null : $('option:selected').text(); 

или вы можете изменить HTML, как это:

<select> 
    <option value="-1">All</option> 
    <option value=".Dog">Dog</option> 
    <option value=".Cat">Cat</option> 
</select> 

и в ЯШ:

$('select').on('change', function() { 

    var animal_type = $(this).val(); // get value 
    if (animal_type != -1) // if All is not selected send selected option text 
    { 
    animal_type = $(this).text(); 
    } 
    else 
    { 
    animal_type = null;  // in case All selected set it null 
    } 
}); 
+0

спасибо @ A.Wolff исправлено –

1

Если вы хотите чтобы избежать отправки типа животного, если значение равно «»:

var myData = { rehomed: false}; 
if (animal_type != "All") { 
    myData.animal_type = animal_type; 
} 
$.ajax({ 
    type: 'POST', 
    url: '/public/rehomed', 
    data: myData 
}); 

Примечание, что у вас есть

$('select').on('change', function() { 
var animal_type = $('option:selected').text(); 
}); 

Так это выглядит как animal_type имеет локальную область видимости [не будет доступен за пределами функции OnChange].

1

Попробуйте это:

$('select').on('change', function() { 
var animal_type = $('option:selected').val(); 
var sending_data; 
if(animal_type == '') 
    sending_data = {rehomed: false} 
} 
else 
{ 
    sending_data = {animal_type: animal_type, rehomed:false} 
} 
    $.ajax({ 
    type: 'POST', 
    url: '/public/rehomed', 
    data: sending_data, 
}); 
}); 
Смежные вопросы