Jquery is added to the input value

This is the last problem with my form (hopefully)

What I want to do is add the size var to my hidden input named my-item-name

I tried to add this

form.find('[name=my-item-name]').append(size.val()); 

but that will not work.

What is the correct way to add val value to input?

 <form method="post" action="" class="jcart"> <fieldset> <input type="hidden" name="jcartToken" value="13823c48f896c49403465fcce9f135ac" /> <input type="hidden" name="my-item-id" value="12" /> <input type="hidden" name="my-item-price" value="15.99" /> <input type="hidden" name="my-item-url" value="http://yahoo.com" /> <input type="hidden" name="my-item-name" value="Operation Braveheart hooded sweatshirt" /> <ul> <li> <select name="my-select" id="foo12"> <option value='Small'>Small</option> <option value='Medium'>Medium</option> <option value='Large'>Large</option> <option value='X-Large'>X-Large</option> </select> </li> <li>Price: $<span id="price12" class="price">15.99</span></li> <li> <label>Qty: <input type="text" name="my-item-qty" value="1" size="3" /></label> </li> </ul> <input type="submit" name="my-add-button" value="add to cart" class="button" /> </fieldset> </form> <script type="text/javascript"> var item_prices_by_size12 = { "Small": { "Price": "15.99", "ItemId": "9-1" },"Medium": { "Price": "16.99", "ItemId": "9-2" },"Large": { "Price": "17.99", "ItemId": "9-3" },"X-Large": { "Price": "18.99", "ItemId": "9-4" }}; $(function() { $('#foo12').change(function() { var form = $(this).parents('form'); // Size is whatever the value the user has selected var size = $(this).val(); // Determine the correct price and item ID based on the selected size var price12 = item_prices_by_size12[size].Price, itemId = item_prices_by_size12[size].ItemId; form.find('#price12').text(price12); form.find('[name=my-item-price]').val(price12); // Update the item ID form.find('[name=my-item-id]').val(itemId); form.find('[name=my-item-name]').append(size.val()); }); }); </script> 
+6
source share
4 answers

add: "Insert the contents specified by the parameter at the end of each element in the set of matched elements."

What do you want to do is add the value I think?

 var value = form.find('[name=my-item-name]').val(); form.find('[name=my-item-name]').val(value + size); 
+5
source

If you mean concatenate:

  $('[name=my-item-name]').val($('[name=my-item-name]').val()+""+size); 

(Reading your code size is already a val value, so you cannot call size.val() )

+5
source

do it like that

 var prev= $('[name=my-item-name]').val() $('[name=my-item-name]').val(prev+" "+size); 
+2
source

best solution to add values ​​for input:

 var attachedValue = []; //add element to attachedValue array attachedValue.push(size.val()); $(element).val(attachedValue); result: 6666,5555,2222 // remove element from array; // remove 5555 element from array var index = attachedValue.indexOf(size.val()); if (index > -1) { attachedValue.splice(index, 1); } $(element).val(attachedValue); result 6666,2222 your form then would look like : <input type="hidden" value="6666,2222" name="my-item-name"> 
+1
source

Source: https://habr.com/ru/post/893933/


All Articles