befidled
asked on
concatenate text input fields on submit
I have a form that allows me to dynamically add fields. For example one field is named "part_numbers". When the renders in the browser it renames each field sequentially using this syntax: parts[parts][0][part_numbe rs]
so for instance, if my form has the 3 part_numbers fields it will now have:
parts[parts][0][part_numbe rs]
parts[parts][1][part_numbe rs]
parts[parts][2][part_numbe rs]
I need to take each of these values and concatenate them with a comma separator. How can I do that and should it be attached to the submit function?
thanks.
so for instance, if my form has the 3 part_numbers fields it will now have:
parts[parts][0][part_numbe
parts[parts][1][part_numbe
parts[parts][2][part_numbe
I need to take each of these values and concatenate them with a comma separator. How can I do that and should it be attached to the submit function?
thanks.
ASKER
that gets me closer. It returns the values of all fields in my form in the alert.
So what do you get in the alert with the following code and what don't you want or what it miss ?
This line put all this value in a field with the id "part_number" : $("#part_number").val( part_numbers );
This line put all this value in a field with the id "part_number" : $("#part_number").val( part_numbers );
<input name="part_number" id="part_number" type="hidden" />
if this field did not exist you can create it on the fly before using : $("body").append("<input name=\"part_number\" id=\"part_number\" type=\"hidden\" />";
$("form").submit(function() {
part_numbers = "";
$.map( $("form").serializeArray(), function(el,i) { part_numbers += ( ((i>0)?"|":"") + el.value) });
$("body").append("<input name=\"part_number\" id=\"part_number\" type=\"hidden\" />";
$("#part_number").val( part_numbers );
//alert( part_numbers ); checking off
});
So what do you get in the alert with the following code and what don't you want or what it miss ?
Could you use a class to identify which fields are to be concatenated, as below:
jQuery(document).ready(function(){
$("#click-me").click( function() {
var pick = [];
$(this).closest("form").find(".concatenate-me").each( function() { pick.push( $(this).val() ) });
alert( pick.toString() );
});
});
<form>
<input class="concatenate-me" value="A" />
<input class="concatenate-me" value="B" />
<input class="concatenate-me" value="C" />
<input class="concatenate-me" value="Z" />
<input id="click-me" type="button" value="Submit" />
</form>
ASKER
The issue now is that it is returning every value within my form as part of "part_numbers" value:
Whereas what I need is to take the part_numbers field (which in this case has values of 5555 and 444) and concatenate them together so that part_numbers = "5555, 444"
30|/members/form-test/|open|members/thankyou-rfq||http://www.mysite.com/members/form-test/|New Form Test|freeform|17896|1|5555|NSN|Quantity||444|NSN|Quantity||||||||||||||||||05d77ad280732d5ba35e3246ddafffc2ce4bff84|3|http://www.aeronautical.com/members/form-test/|stay-informed|1|my@emailaddress.com
Whereas what I need is to take the part_numbers field (which in this case has values of 5555 and 444) and concatenate them together so that part_numbers = "5555, 444"
What about :
$("form").submit(function() {
part_numbers = "";
$.map( $("[name^='parts[parts]']").serializeArray(), function(el,i) { part_numbers += ( ((i>0)?"|":"") + el.value) });
$("#part_number").val( part_numbers );
alert( part_numbers );
});
ASKER
That's closer, however the row of fields that gets cloned actually has 4 fields each with the "parts[parts]" at the beginning of their name. The last segment of the name is [part_numbers] and is unique to each field. Is there a way to write it to fetch that?
ASKER
i don't know if that was clear enough, here is a sample of the names of each of the four fields:
parts[parts][0][part_numbe rs]
parts[parts][0][nsns]
parts[parts][0][quantity_r equired]
parts[parts][0][condition_ required]
So if we can isolate them based on the last segment of their name the above code should work.
parts[parts][0][part_numbe
parts[parts][0][nsns]
parts[parts][0][quantity_r
parts[parts][0][condition_
So if we can isolate them based on the last segment of their name the above code should work.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
ah perfect. Thanks so much leakim!
brian
brian
You're welcome! Thanks for the points!
Try again :)
What do you get in the alert with the following code and what don't you want or what it miss ?
Open in new window