I have the below HTML code, I want to call a function using the ID of the field whenever there is input in the input fields regardless of the input field number.
<input type="text" pattern="[0-9]*" name="code" maxlength="1" autofocus="autofocus" id="input1" />
<input type="text" pattern="[0-9]*" name="code" maxlength="1" id="input2" />
<input type="text" pattern="[0-9]*" name="code" maxlength="1" id="input3" />
<input type="text" pattern="[0-9]*" name="code" maxlength="1" id="input4" />
Instead of the below, I want to call one function for all.
$("#input1").on('input', function () {
console.log("this is input1");
});
$("#input2").on('input', function () {
console.log("this is input2");
});
$("#input3").on('input', function () {
console.log("this is input3");
});
$("#input4").on('input', function () {
console.log("this is input4");
});
CodePudding user response:
You can use this selector to target all your inputs $('input[id^=input]')
.
input[id^=input]
means that it will work with all inputs where the id of the input starts with input
$("input[id^=input]").on('input', function() {
console.log("this is " this.id);
});
$("input[id^=input]").on('input', function() {
console.log("this is " this.id);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" pattern="[0-9]*" name="code" maxlength="1" autofocus="autofocus" id="input1" />
<input type="text" pattern="[0-9]*" name="code" maxlength="1" id="input2" />
<input type="text" pattern="[0-9]*" name="code" maxlength="1" id="input3" />
<input type="text" pattern="[0-9]*" name="code" maxlength="1" id="input4" />
CodePudding user response:
Many methods. One of them is to select all the inputs and triggers the input method
$("input").on("input", function (e) {
console.log("this is input", e.target.id);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<input type="text" pattern="[0-9]*" name="code" maxlength="1" autofocus="autofocus" id="input1" />
<input type="text" pattern="[0-9]*" name="code" maxlength="1" id="input2" />
<input type="text" pattern="[0-9]*" name="code" maxlength="1" id="input3" />
<input type="text" pattern="[0-9]*" name="code" maxlength="1" id="input4" />
CodePudding user response:
The jQuery $()
query selector function accepts multiple comma-separated selectors.
$("#input1,#input2,#input3,#input4").on('input', function () {
console.log("this is input from input 1, 2, 3 and 4");
});