80

I have two form like this:

<form id='form1' name='form1'>
  <input name='name' id='name'>
  <input name='name2' id='name2'>
</form>

<form id='form2' name='form2'>
  <input name='name' id='name'>
  <input name='name2' id='name2'>
</form>

Now I want to insert text in name field of form2. I am using following jQuery code but it fill name field of form1.

$("#name").val('Hello World!');

So how to select specific form elements only?

5 Answers 5

153

It isn't valid to have the same ID twice, that's why #name only finds the first one.

You can try:

$("#form2 input").val('Hello World!');

Or,

$("#form2 input[name=name]").val('Hello World!');

If you're stuck with an invalid page and want to select all #names, you can use the attribute selector on the id:

$("input[id=name]").val('Hello World!');
Sign up to request clarification or add additional context in comments.

8 Comments

+1 Thanks. One more thing, What if I want to select two fields of a specific form using multiple selector.
$( '#formId field1Id, #formId field2Id' )
@Awan - Another option is $('#form2 input') for all input fields, or $('#form2 input').filter('[name=name1], [name=name2]')
@charliegriefer - of course, you'll need #field1Id and #field2Id, and I'm not sure how that would behave with duplicated IDs.
@Kobi d'oH! You're absolutely correct. I forgot the hashes. Editing now :) Regarding the duplicate IDs, I thought the question was generic, and not specific to this particular example of invalid markup :)
|
13

I prefer an id descendant selector of your #form2, like this:

$("#form2 #name").val("Hello World!");

http://api.jquery.com/descendant-selector/

Comments

9

although it is invalid html but you can use selector context to limit your selector in your case it would be like :

$("input[name='name']" , "#form2").val("Hello World! ");

http://api.jquery.com/jquery/#selector-context

2 Comments

It's worth noting that $('input[name=name]','#form2').val('Hello World!'); is translated, internally, by jQuery to $('#form2').find('input[name=name]').val('Hello World!') (see: jQuery API for details.)
You forgot the quotation marks in the name part- With out them i get a syntax error
3

I know the question is about setting a input but just in case if you want to set a combobox then (I search net for it and didn't find anything and this place seems a right place to guide others)

If you had a form with ID attribute set (e.g. frm1) and you wanted to set a specific specific combobox, with no ID set but name attribute set (e.g. district); then use

$("#frm1 select[name='district'] option[value='NWFP']").attr('selected', true);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <form id="frm1">
        <select name="district">
            <option value="" disabled="" selected="" hidden="">Area ...</option>
            <option value="NWFP">NWFP</option>
            <option value="FATA">FATA</option>
        </select>
    </form>

Comments

-2
$("#name", '#form2').val("Hello World")

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.