Greetings,
I have a form with a variable number of inputs, a simplified version of which looks like this:
<form>
<label for="same">all the same as first?</label>
<input id="same" name="same" type="checkbox" />
<input type="text" id="foo[1]" name="foo[1]" value="" />
<input type="text" id="foo[2]" name="foo[2]" value="" />
<input type="text" id="foo[3]" name="foo[3]" value="" />
<input type="text" id="foo[4]" name="foo[4]" value="" />
<input type="text" id="foo[5]" name="foo[5]" value="" />
</form>
The idea is to tick the #same checkbox and have jQuery copy the value from #foo[1] into #foo[2], #foo[3], etc. They also need to clear if #same is unchecked.
There can be any number of #foo inputs, based upon input from a previous stage of the form, and this bit is giving me trouble. I’m sure I’m missing something obvious, but I can’t get any variation on $('#dest').val($('#source').val()); to work.
Help!
jQuery will fail to select by id
$('#foo[1]')since it includes[and], so I’m selecting the first element as$('[id=foo[1]]'). Then getting all next text boxes, then filtering them out if their id attribute does not matchfoo[<digits>], and then either applying the same value as the first one, or clearing them depending on the checkbox state.example
Although this works, it might just be easier to add classes such as
firstandrestto the HTML which would make things a lot easier.The jQuery code then simplifies to: