0

I don't understand why it doesn't work, It should print debug by console.log and i tried to use on change method also didn't work.

So, i can't find the way to fix, How i can solve this problem. Thank you for your help.

$(document).ready(function() {
  $("[id^=item-]").on('input', function() {
    console.log(this.val())
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input class="input item-input" type="text" id="item-1" placeholder="จำนวน" value="">
<input class="input item-input" type="text" id="item-2" placeholder="จำนวน" value="">
<input class="input item-input" type="text" id="item-3" placeholder="จำนวน" value="">
<input class="input item-input" type="text" id="item-4" placeholder="จำนวน" value="">

or

$(document).ready(function() {
   $("#item-1").on('input', function() {
    console.log(this.val())
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input class="input item-input" type="text" id="item-1" placeholder="จำนวน" value="">
<input class="input item-input" type="text" id="item-2" placeholder="จำนวน" value="">
<input class="input item-input" type="text" id="item-3" placeholder="จำนวน" value="">
<input class="input item-input" type="text" id="item-4" placeholder="จำนวน" value="">

4
  • 1
    There should be a TypeError in the console because this is the <input> element and that has no .val() method. Either wrap this in a jQuery object or use .value instead Commented Feb 8, 2020 at 15:05
  • 1
    Ah crap. Subconsciously did this while redoing it as a snippet. I'll revise. Commented Feb 8, 2020 at 15:07
  • 3
    $(this) is jQuery Object & this is JS object which don't have function .val(). Use this.value or $(this).val() Commented Feb 8, 2020 at 15:10
  • I went wrong, Thank you so much everyone. Commented Feb 8, 2020 at 15:13

2 Answers 2

3

this in your event handler is the <input> element that triggered the event.
.val() is a jQuery method.

Either wrap this in a jQuery object

$(this).val()

Or use .value

this.value

$(document).ready(function() {
   $("#item-1").on('input', function() {
    console.log(this.value);
    console.log($(this).val());
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input class="input item-input" type="text" id="item-1" placeholder="จำนวน" value="">
<input class="input item-input" type="text" id="item-2" placeholder="จำนวน" value="">
<input class="input item-input" type="text" id="item-3" placeholder="จำนวน" value="">
<input class="input item-input" type="text" id="item-4" placeholder="จำนวน" value="">

Sign up to request clarification or add additional context in comments.

Comments

2

You either need to wrap this in a jQuery object:

console.log($(this).val());

$(document).ready(function() {
  $("[id^=item-]").on('input', function() {
    console.log($(this).val());
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input class="input item-input" type="text" id="item-1" placeholder="จำนวน" value="">
<input class="input item-input" type="text" id="item-2" placeholder="จำนวน" value="">
<input class="input item-input" type="text" id="item-3" placeholder="จำนวน" value="">
<input class="input item-input" type="text" id="item-4" placeholder="จำนวน" value="">

or use this natively and grab the value:

console.log(this.value);

$(document).ready(function() {
  $("[id^=item-]").on('input', function() {
    console.log(this.value);
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input class="input item-input" type="text" id="item-1" placeholder="จำนวน" value="">
<input class="input item-input" type="text" id="item-2" placeholder="จำนวน" value="">
<input class="input item-input" type="text" id="item-3" placeholder="จำนวน" value="">
<input class="input item-input" type="text" id="item-4" placeholder="จำนวน" value="">

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.