• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 930
  • Last Modified:

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

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
n00b0101
Asked:
n00b0101
  • 2
1 Solution
 
Justin MathewsCommented:
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
 
Justin MathewsCommented:
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
 
jrm213jrm213Commented:
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

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now