2009-10-05 74 views
0

我有一个窗体,其中的字段名由服务器端代码动态生成。 我试图让JQuery来操纵这些字段的值,但是遇到了麻烦。使用jquery获取动态生成名称字段的值

生成的字段分别使用一个唯一的ID号示例配对:

命名option_3030 将具有amount_3030字段

动态创建的字段的数目也是未知数单选按钮(有可能是一个或10个输入对 - 所有命名为option_xxxx和amount_xxxx

我想要做的是使用jquery来设置3030_amount字段的值,当3030_option被选中(或未选中)。问题是,我不知道事先并不知道实际的身份证号码是什么。

有什么建议吗?

感谢,

大卫

+0

每台收音机都有自己的价值吗? – yoda

回答

0

你可以抓住的id属性,并从中取号:

$('input[type=radio]').change(function() 
{ 
    var id = this.id.split(/_/)[1]; 
    var amount = $('input[name=amount_' + id + ']'); 
    amount.val(123); 
} 
1

一种选择是使用类:

<input type="radio" id="3030_Option" class="option" /> 
<input type="text" id="3030_amount" class="amount" /> 

<script> 
$(function() { 
    $('.option').click(function() { 
     $(this).next('.amount').val('new value goes here') 
    }) 
}) 
</script> 

通过启动与数字HTML ID的方式在技术上是not allowed

ID和NAME代币必须以 字母([A-Za-z])开头,并且可能跟随 通过任何数目的字母,数字 ([0-9]),连字符( “ - ”),下划线 ( “_”),冒号( “:”),和句点( “”)

+0

当然,但我打赌OP有多个(选项,金额)对:)你必须使用$(this).next('。amount') – vava

+0

@vava:我敢打赌,你是对的。不过,我回答问题的时候,这个没有提到多个元素。 –

+0

为了清晰起见,我调整了我的问题。我也调整了我的代码以符合适当的命名约定。感谢您指出了这一点。 –

0

如果你的事件与类绑定,然后解析单击元素的ID来获得数字标识符使用文本领域。

<input type="radio" id="3030_Option" class="option" /> 
<input type="text" id="3030_amount" class="amount" /> 
<input type="radio" id="3031_Option" class="option" /> 
<input type="text" id="3031_amount" class="amount" /> 


$('.option').click(function() { 
    var id = $(this).attr('id'); 
    var num = id.substring(0, id.indexOf('_')); 
    $('#' + num + '_amount').val('value'); 
}); 

正如其他人指出的那样,数字作为id的首字符无效。后缀它们会更好。在这种情况下,代码需要稍微修改。

<input type="radio" id="Option_3030" class="option" /> 
<input type="text" id="amount_3030" class="amount" /> 
<input type="radio" id="Option_3031" class="option" /> 
<input type="text" id="amount_3031" class="amount" /> 

$('.option').click(function() { 
    var id = $(this).attr('id'); 
    var num = id.substring(id.indexOf('_') + 1, id.length); 
    $('#amount_' + num).val('value'); 
}); 
0

我认为你可以尝试在生成代码时注册javascipt函数。我做了类似于gridview的东西。

generatedControl.Attributes.Add("onchange", "jqueryFunction(" generatedId ")");