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!
Perhaps something like this?
http://jsbin.com/anone3/2/edit
EDIT: This code will only apply to input elements whose name starts with the string foo Example
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
first
andrest
to the HTML which would make things a lot easier.The jQuery code then simplifies to: