Jquery keyup multiple inputs
Question by Claremont
I am trying to make it so when someone uses the input the text that corresponds to it will show.
<div class="content1" style="display: block;">Content 1</div>
<div class="content2" style="display: none;">Content 2</div>
<div class="content3" style="display: none;">Content 3</div>
<div class="content4" style="display: none;">Content 4</div>
<ul class="addReview">
<li><p>Input 1</p><input type="text" name="input1" value="" id="input1" autocomplete="off" maxlength="2" /></li>
<li><p>Input 2</p><input type="text" name="input2" value="" id="input2" autocomplete="off" maxlength="2" /></li>
<li><p>Input 3</p><input type="text" name="input3" value="" id="input3" autocomplete="off" maxlength="2" /></li>
<li><p>Input 4</p><input type="text" name="input4" value="" id="input4" autocomplete="off" maxlength="2" /></li>
</ul>
Would I do a keyup function for each input or is there a way to make one keyup function?
Answer by nnnnnn
This should do it for your current markup:
$('.addReview input[type="text"]').keyup(function() {
$('div[class^="content"]').hide();
$('div.' + this.id.replace(/input/, "content")).show();
});
Demo: http://jsfiddle.net/WD3CU/
But it would be neater if you gave the divs a common class and different ids. E.g., if all the divs had a class “content” and an id in the form “content1” then you could do this:
$('.addReview input[type="text"]').keyup(function() {
$('div.content').hide();
$('#' + this.id.replace(/input/, "content")).show();
});
Which looks similar but is much more robust (the way I did it for your current html will likely break if you were to give the divs additional classes).
Demo incorporating my suggested markup changes: http://jsfiddle.net/WD3CU/1/
Also, in my opinion it would make more sense to use the .focus() event rather than .keyup(), so that the appropriate div is shown as soon as the user clicks or tabs into one of the inputs.
Answer by Starx
You have to bind to a common selector like this
$('.addReview input:text').keyup(function() { });
Or a class selector like this
$('.addReview .mytextboxclass').keyup(function() { });
Or an attribute selector like in nnnnnn’s answer
$('.addReview input[type="text"]').keyup(function() { });