3

I have a select like this:

<select id="select-filter-item" data-hasqtip="3" oldtitle="Seleziona un tipo di servizio e filtra gli appuntamenti visualizzati sul calendario." title="" aria-describedby="qtip-3">
    <optgroup label="Servizi" type="services-group">
        <option type="provider">Tutti i trattamenti</option>
        <option value="5CFCA63F-5550-4F18-9C03-FC5B50FC67CC" type="service">Taglio capelli </option>
        <option value="B626AD6A-E59B-4D7A-875B-CE3389B11E69" type="service">Colore capelli</option>
        <option value="93003E75-A757-43F0-B2E8-C5ACDD57DBB3" type="service">Trattamenti viso</option>
        <option value="3E9924C3-6AEB-4450-B534-C06DC30F9E35" type="service">Massaggi corpo</option>
    </optgroup>
</select>

I need to determine if the selected option has the attribute value. For example, the first option "Tutti i trattamenti" doesn't have any value attribute. How can I implement this in jQuery?

Mi-Creativity
  • 9,554
  • 10
  • 38
  • 47
Salvatore Fucito
  • 255
  • 1
  • 14

5 Answers5

5

One solution is to use the has attribute selector on the selected option:

$("#select-filter-item").find(":selected").is("[value]")

Example Fiddle

Stryner
  • 7,288
  • 3
  • 18
  • 18
0

This should work:

 $("#select-filter-item").change(function() {
  var txt = $("#select-filter-item").find(":selected").is("[value]")

   if (txt) {
    alert("has a value")
  } else {
   alert("does not have a value")
  }
});

fiddle https://jsfiddle.net/7sm9xh31/3/

Cory
  • 1,263
  • 16
  • 31
0

Hope this will help

$("#select-filter-item").on("change",function(){
    if ($('#select-filter-item option:selected').attr('value') != undefined) {
        console.log("the selected option have the attribute value.")
    }else {
        console.log("the selected option doesn't have any value.")
    }
});
0

Easiest way is by using pure javascript .hasAttribute() native function

JS Fiddle 1 - check the console.

var opts = $('#select-filter-item option');

opts.each(function(i) {
  if (!opts[i].hasAttribute("value")) {
    console.log('option-' + i + ': "' + opts[i].innerHTML + '" has no "value" attribute');
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<select id="select-filter-item" data-hasqtip="3" oldtitle="Seleziona un tipo di servizio e filtra gli appuntamenti visualizzati sul calendario." title="" aria-describedby="qtip-3">
  <optgroup label="Servizi" type="services-group">
    <option type="provider">Tutti i trattamenti</option>
    <option value="5CFCA63F-5550-4F18-9C03-FC5B50FC67CC" type="service">Taglio capelli</option>
    <option value="B626AD6A-E59B-4D7A-875B-CE3389B11E69" type="service">Colore capelli</option>
    <option value="93003E75-A757-43F0-B2E8-C5ACDD57DBB3" type="service">Trattamenti viso</option>
    <option value="3E9924C3-6AEB-4450-B534-C06DC30F9E35" type="service">Massaggi corpo</option>
  </optgroup>
</select>

Same as above but with vanilla javascript JS Fiddle 2

var opts = document.querySelectorAll('#select-filter-item option');

for (var i = 0; i < opts.length; i++) {
  if (!opts[i].hasAttribute("value")) {
    console.log('option-' + i + ': "' + opts[i].innerHTML + '" has no "value" attribute');
  }
}

Resource:

Mi-Creativity
  • 9,554
  • 10
  • 38
  • 47
0

WORKING FIDDLE

You can do it this way also

if($("#select-filter-item").find(":selected").attr("value")!=null){
    alert("VALUE IS THERE");
}
else
{
    alert("VALUE IS NOT THERE");
}
Hemal
  • 3,682
  • 1
  • 23
  • 54