Set new id with jQuery
javascript, jquery
Solution
I just wrote a quick plugin to run a test using your same snippet and it works fine
$.fn.test = function() {
return this.each(function(){
var new_id = 5;
$(this).attr('id', this.id + '_' + new_id);
$(this).attr('name', this.name + '_' + new_id);
$(this).attr('value', 'test');
});
};
$(document).ready(function() {
$('#field_id').test()
});
<body>
<div id="container">
<input type="text" name="field_name" id="field_id" value="meh" />
</div>
</body>
So I can only presume something else is going on in your code. Can you provide some more details?
Problem
"this" is a text field, "new_id" is an integer. When I apply the following snippet: ``` $(this).attr('id', this.id + '_' + new_id); $(this).attr('name', this.name + '_' + new_id); $(this).attr('value', 'test'); ``` the id changes, the name changes too, but not the value. If I change the last line to this (and therefore use a string literal) ``` $('#mytextfield_3').attr('value', 'test'); ``` it works. Any ideas? -- EDIT -- Thanks to Steerpike for the quick plugin test - i believe it should work, but i can't find the error. Here's some more code: I create the clone using ``` clone = $(this).find('.clone_fields_container:first').clone(); ``` "clone" now contains a div which has embedded input fields. After generating a new id: ``` /** Iterate over input and select fields in container */ clone.children('input,select,textarea').each(function() { $(this).attr('id', this.id + '_' + new_id); $(this).attr('name', this.name + '_' + new_id); $(this).val('test'); console.log(this); }); ``` The text fields do not have any values.