-4

I have the following code where the change on HTML Select can happened via trigger or by changing it manually.

My question is, if is it possible to know if that change is happened via trigger or by manually?

My sample code:

$(document).on('change', 'select#days', function(event)
{
    alert('Change happened');
});
$(function()
{
    $("#days").trigger('change');
});

This is my fiddle.

Legionar
  • 7,472
  • 2
  • 41
  • 70
Pawan
  • 31,545
  • 102
  • 256
  • 434

3 Answers3

1

As you are using a jquery event change on the select element. There is a key named isTrigger you can use it:

$(document).on('change', 'select#days', function(event) {
  var ev = event.isTrigger || event.type;
  $('pre').html('isTrigger ::::'+ ev);
});
$(function() {
  $("#days").trigger('change');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="days" name="days">
  <option value="0">- Select day -</option>
  <option value="1">Sunday</option>
  <option value="2">Monday</option>
  <option value="3">Tuesday</option>
  <option value="4">Wednesday</option>
  <option value="5">Thursday</option>
  <option value="6">Friday</option>
  <option value="7">Saturday</option>
</select>
<pre></pre>
Jai
  • 74,255
  • 12
  • 74
  • 103
0
event.isTrigger

is what you want to find it out, it is undefined when done manually and true when is fired by trigger method.

$(document).on('change', 'select#days', function(event)
{
    alert(event.isTrigger);
    alert('Change happened');
});
$(function()
{
    $("#days").trigger('change');
});

updated fiddle

Legionar
  • 7,472
  • 2
  • 41
  • 70
Sindhoo Oad
  • 1,194
  • 2
  • 13
  • 29
0

You can check with event.originalEvent too.

Eg.

HTML

<div id="div1">
    <span id="span1">Span 1</span>
</div>

JavaScript

$("#span1").on("click", function(event){

     if (event.originalEvent) {

        alert("A Human Clicked on span1!");

    } else {
        alert("A Human Created Bot Clicked on span1!");
    }

});

botFn = function(){

     $("#span1").trigger("click", function(event){
            if (event.originalEvent) {

        alert("A Human Clicked on span1!");

    } else {
        alert("A Human Created Bot Clicked on span1! after 2 seconds!");
    }
  });

}

setTimeout(botFn, 2000);
Jenson M John
  • 5,499
  • 5
  • 30
  • 46