1

I'm trying to use a change on a data- element to trigger element to trigger some jQuery (instead of a css class). The HTML below is generated by a Ruby Gem, so I don't have control over the id. I did add a data element.

<input data-number-to-text="true" class="numeric integer optional form-control" type="number" step="1" name="deck[cards_attributes][1481571763648][number]" id="deck_cards_attributes_1481571763648_number">

Then I am trying to target the data element, but this jQuery does not fire:

$(':data(number-to-text)').change(function(){
  debugger;
})
port5432
  • 5,889
  • 10
  • 60
  • 97
  • have a look at http://stackoverflow.com/questions/16781778/detecting-attribute-change-of-value-of-an-attribute-i-made – bjelli Dec 12 '16 at 19:49
  • or here: http://stackoverflow.com/questions/17528284/does-setting-jquery-data-trigger-an-event – Steve0 Dec 12 '16 at 19:49

3 Answers3

2
$(':data(number-to-text)') 

is not what you want. Try the following.

$("input[data-number-to-text^='true']").change(function(){
  debugger;
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input data-number-to-text="true" class="numeric integer optional form-control" type="number" step="1" name="deck[cards_attributes][1481571763648][number]" id="deck_cards_attributes_1481571763648_number">

You can get familiar with selecting element by attribute value in MDN CSS#Attribute_selectors

Andriy Ivaneyko
  • 20,639
  • 6
  • 60
  • 82
react_or_angluar
  • 1,568
  • 2
  • 13
  • 20
1
$('form').on('change','input.numeric',function(){
});

You should always delegate http://api.jquery.com/on/

maxito
  • 21
  • 4
1

You have incorrect selector, use [data-number-to-text="true"] instead of :data(number-to-text):

$('[data-number-to-text="true"]').change(function(){
  alert('Change triggered');
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input data-number-to-text="true" class="numeric integer optional form-control" type="number" step="1" name="deck[cards_attributes][1481571763648][number]" id="deck_cards_attributes_1481571763648_number">
Then I am trying to target the data element, but this jQuery does not fire:
Andriy Ivaneyko
  • 20,639
  • 6
  • 60
  • 82