Solved

jquery - set value of hidden input field based on values of text fields

Posted on 2010-11-22
3
858 Views
Last Modified: 2012-06-21
I have three form fields: name, first name, and lastname. The name field is hidden and I'm trying to set the value to the firstname + lastname on keypress. I'm also trying to format it so that the characters are all lowercase and spaces are transformed into dashes.

So:

<input type="text" name="firstname" value="John John" />
<input type="text" name="lastname" value="Doe" />
<input type="hidden" name="name" value="john-john-doe" />

Open in new window


I've been trying to use the following code, but it's not working...

         
   $('input[name=field_firstname[0][value]]').keyup(function() {
                    var firstname = $('input[name=field_firstname[0][value]]').val();
                    var lastname = $('input[name=field_lastname[0][value]]').val();
                    $('input[name=name]').val(firstname.replace(/\s/g, "-").toLowerCase()+lastname.replace(/\s/g, "-").toLowerCase());
            });

            $('input[name=field_lastname[0][value]]').keyup(function() {
                    var firstname = $('input[name=field_firstname[0][value]]').val();
                    var lastname = $('input[name=field_lastname[0][value]]').val();
                    $('input[name=name]').val(firstname.replace(/\s/g, "-").toLowerCase()+lastname.replace(/\s/g, "-").toLowerCase());
            });

Open in new window

0
Comment
Question by:n00b0101
  • 2
3 Comments
 
LVL 16

Accepted Solution

by:
jmatix earned 500 total points
ID: 34190437
This should work:
$(document).ready(function(){

$('input[name=firstname]').keyup(function() {

                var firstname = $('input[name=firstname]').val();

                var lastname = $('input[name=lastname]').val();

                $('input[name=name]').val(firstname.replace(/\s/g, "-").toLowerCase()+lastname.replace(/\s/g, "-").toLowerCase());

        });



        $('input[name=lastname').keyup(function() {

                var firstname = $('input[name=firstname').val();

                var lastname = $('input[name=lastname').val();

                $('input[name=name]').val(firstname.replace(/\s/g, "-").toLowerCase()+lastname.replace(/\s/g, "-").toLowerCase());

        });

});

Open in new window

0
 
LVL 16

Expert Comment

by:jmatix
ID: 34190470
Sorry, slight correction:
$(document).ready(function(){

$('input[name=firstname]').keyup(function() {

                var firstname = $('input[name=firstname]').val();

                var lastname = $('input[name=lastname]').val();

                $('input[name=name]').val(firstname.replace(/\s/g, "-").toLowerCase()+lastname.replace(/\s/g, "-").toLowerCase());

        });



        $('input[name=lastname]').keyup(function() {

                var firstname = $('input[name=firstname]').val();

                var lastname = $('input[name=lastname]').val();

                $('input[name=name]').val(firstname.replace(/\s/g, "-").toLowerCase()+lastname.replace(/\s/g, "-").toLowerCase());

        });

});

Open in new window

0
 
LVL 17

Expert Comment

by:jrm213jrm213
ID: 34190477
Hi,
It might be better to use .blur() instead of .keyup, then you are running your code a lot less, and blur will get called whenever that field loses the focus...

plus unless for some reason you can't do it, it would be good to give your input boxes an id and use that to find them. I believe id is technically a required attribute anyway.
<script type="text/javascript">
	$(document).ready(function() {
		$('#firstname,#lastname').blur(function() {
			frst = $('#firstname').val().toLowerCase().replace(/ /g,'-');
			lst = $('#lastname').val().toLowerCase().replace(/ /g,'-');
			$('#name').val(frst + "-" + lst);
			alert($('#name').val());
		});
	});
</script>

Open in new window

0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I've been trying to accomplish this for a while and it just struck me yesterday how to accomplish this task. I have done searches all over the internet looking for ways to email pages from my applications and finally I have done it!!! Every single s…
Active Directory replication delay is the cause to many problems.  Here is a super easy script to force Active Directory replication to all sites with by using an elevated PowerShell command prompt, and a tool to verify your changes.
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…
The viewer will learn how to create a basic form using some HTML5 and PHP for later processing. Set up your basic HTML file. Open your form tag and set the method and action attributes.: (CODE) Set up your first few inputs one for the name and …

919 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

14 Experts available now in Live!

Get 1:1 Help Now