2012-11-06 43 views
4

我需要使用第二个(动态生成的)div的值更新表单某些输入字段的值。按名称在div中选择输入

下面的代码

$("#second_update_form_data :input").each(function(index) { 

//find all input fields in the second div 
       var FieldName = $(this).attr("name"); 
       var FieldValue = $(this).val(); 

    //try to get the corresponding field from the original form to change it 
       var Selector = "#TT_CartForm__form input[name=" + FieldName + "]"; 
       var OriginalFiled = $(Selector); 

这是不行的,但我不知道为什么。我可以为原始输入字段添加一个id并使用它来选择它们,但我更愿意理解错误并使用正确的选择器。

由于提前, 亲切的问候

编辑: 对不起,我知道我没有指定哪部分不工作。 这是最后一行,当我尝试使用选择器选择,所以它的这最后一个似乎

+1

哪一部分不工作?你关闭了你的每个功能吗? – undefined

+1

是否有任何错误?也是一个随机的注释,但不要使用'大写'作为变量,除非它们是Classes/instsantiable对象。 –

+0

感谢您对命名约定的建议。是的,每个函数都是关闭的,错误在行var OriginalFiled = $(Selector);如果我删除或评论它的工作,直到结束 – DavidTonarini

回答

3

更新基于on your update

var OriginalFiled = $('#TT_CartForm__form input[name="' + FieldName + '"]'); 

请尝试更改您的报价以确保字符串可读。要记住的其他事情,只有在指定!DOCTYPE的情况下,IE7和IE8才支持属性选择器。并在IE6-他们不工作ata所有

也仔细检查您的元素ID名称,我注意到它有两个区域是下划线和一个区域有2个下划线。确保你输入的div具有完全相同的id值

+0

啊哈,很简单,但根本看不到! :D非常感谢您的进一步信息。 – DavidTonarini

0

变化是错误的:

$("#second_update_form_data :input") 

$("#second_update_form_data input") 
+0

这不会解决问题,':input'已弃用jQuery,与输入'相同,只是较慢。 –

+0

不知道这件事。 Incase其他人发现这一点:http://bugs.jquery.com/ticket/9400有更多的细节 – DickieBoy

0

你的问题是动态生成的div。您需要使用。对()

jQuery.on()

+0

你是什么意思?我不需要附加处理程序,我需要选择一个现有的字段。 – DavidTonarini

2

稍快选择:

$('#second_update_form_data').find('input').each(function(index) { 

    //find all input fields in the second div 
    var fieldName  = $(this).attr('name'), 
     fieldValue = $(this).val(), 

    //try to get the corresponding field from the original form to change it 
     selector  = 'TT_CartForm__form input[name=' + fieldName + ']', 
     originalFiled = $(selector);