javascript - How to read html form contents using jquery? -
i have html form in can add input element dynamically using jquery. @ end want submit/read data on form. used serialize method gives me data of elements on form , not if dynamically added elements.
here work:
<html> <head> <title></title> <script type="text/javascript" src="jquery-1.11.1.min.js"></script> <script type="text/javascript"> function call(class_name) { console.log(class_name); $("#new_append_pass").append('<input type="password" class="username_' + class_name + '" name="pass">'); } $(document).ready(function () { var count = 0; var alt, str; $(".user_pass ").click(function () { $("#append_me").append('<input type="password" class="' + $("#append_me").attr("alt") + '" name="pass">'); }); $(".new_user_pass ").click(function () { count = count + 1; alt = $("#new_append_me").attr("alt") + "_" + count; str = '<input type="text" class="username_' + count + '" name="username">' + '<input type="password" class="' + alt + '" name="pass">' + '<span alt="username_' + count + '" id="new_append_pass"></span>' + '<a href="#" onclick="call(' + count + ')" class="add_new_pass"> add pass </a>'; $("#new_append_me").append(str); }); $("#submit").click(function () { var get_class_name = $(".user_pass").find("input[type=text]").attr("name"); var get_class_name1 = $("#new_append_me").find("input[type=text]").attr("name"); console.log($("." + get_class_name).serialize()); console.log($("." + get_class_name1).serialize()); }); }); </script> </head> <body> <div class="main"> <div class="user_pass"> <input type="text" class="username" name="username" /> <input type="password" class="username" id="username" name="pass" /> <span alt="username" id="append_me"></span> <a href="#">add pass </a> <div class="new_user_pass"> <a href="#">add user </a> <span alt="username" id="new_append_me"></span> </div> </div> </div> <input type="button" value="submit" id="submit" /> </body> </html>
how read contents of dynamically added form elements???
please consider following steps improve markup structure. tough decode snippets in fiddle.
- each
<input>
element has different class, different attributes. , trying access them using common selector. - your
<a>
links should have unique attribute or selector. both fired on click of 'add user' - try use separate
<div>
s or atleast appropriate selectors accessing 2 different sets of<input>
elements. - none of
<input>
elements has same class.$('classname').serialize()
never work elements. .attr('name')
getting class? wrong logic; 'name' attributes each<input>
not same.- use delegation using .on(), in case of dynamically generated elements.
- keep common convention; either class selector or id's, don't mix them.
and here fiddle solution. made changes in html attributes, click events , everything.
Comments
Post a Comment