Javascript 忽略select选项jQuery的值

Javascript 忽略select选项jQuery的值,javascript,jquery,Javascript,Jquery,这可能很简单,但我想知道如何忽略选项选择的值,如果它等于某个值,例如我有这个选择 <select> <option value="">All</option> <option value=".Dog">Dog</option> <option value=".Cat">Cat</option> </select> $('select').on('change', function() {

这可能很简单,但我想知道如何忽略
选项选择的值,如果它等于某个值,例如我有这个选择

<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();
});

我想从ajax post中删除
animal\u type
变量的原因是post的参数在rails中为我在服务器端进行SQL查询。

在执行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,
    });
});

在执行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,
    });
});

您可以这样做:

var animal_type = $('option:selected').text() == "All" ? null : $('option:selected').text();
<select>
  <option value="-1">All</option>
  <option value=".Dog">Dog</option>
  <option value=".Cat">Cat</option>
</select>
或者您可以像这样修改html:

var animal_type = $('option:selected').text() == "All" ? null : $('option:selected').text();
<select>
  <option value="-1">All</option>
  <option value=".Dog">Dog</option>
  <option value=".Cat">Cat</option>
</select>

您可以这样做:

var animal_type = $('option:selected').text() == "All" ? null : $('option:selected').text();
<select>
  <option value="-1">All</option>
  <option value=".Dog">Dog</option>
  <option value=".Cat">Cat</option>
</select>
或者您可以像这样修改html:

var animal_type = $('option:selected').text() == "All" ? null : $('option:selected').text();
<select>
  <option value="-1">All</option>
  <option value=".Dog">Dog</option>
  <option value=".Cat">Cat</option>
</select>

如果要避免在值为“”时发送动物类型:

注意您已经

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

因此,动物类型似乎有一个局部范围[在onchange函数之外无法访问]。

如果要避免在值为“”时发送动物类型,请:

注意您已经

$('select').on('change', function() {
 var animal_type = $('option:selected').text();
});
因此,动物类型似乎有一个局部范围[在onchange函数之外无法访问]。

尝试以下操作:

$('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,
 });
});
试试这个:

$('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,
 });
});

难道你不能将
animal\u type
设置为
null
0
然后在服务器端捕获它吗?我想你根本不想调用ajax?只需在$.ajax周围放置一个if…对不起,伙计们,我已经更新了我的问题,说明了我为什么要尝试这样做this@Richlewis为什么要传递文本而不是值?它会更好,例如:
var animal\u type=this.value因为我的值设置为.Dog(例如使用mixitup js过滤结果),所以文本取自my db中的值(基本上是提取所有唯一值)难道你不能将
animal\u type
设置为
null
0
然后在服务器端捕获它吗?我想你根本不想调用ajax?只需在$.ajax周围放置一个if…对不起,伙计们,我已经更新了我的问题,说明了我为什么要尝试这样做this@Richlewis为什么要传递文本而不是值?它会更好,例如:
var animal\u type=this.value因为我的值设置为.Dog(例如使用mixitup js过滤结果),所以文本取自my db中的值(基本上是提取所有唯一值)