使用jquery通过动态生成的名称获取字段值

时间:2009-10-05 14:45:06

标签: javascript jquery

我有一个表单,其中包含由服务器端代码动态生成的字段名称。 我试图让JQuery操纵这些字段的值,但遇到了麻烦。

生成的字段使用唯一的ID号进行配对示例:

名为option_3030的单选按钮 将有一个amount_3030字段

动态创建的字段数也是未知的(可能有一个或十个输入对 - 全部名为option_xxxx和amount_xxxx。

我要做的是在选中(或取消选中)3030_option时使用jquery设置3030_amount字段的值。问题是,我不知道实际的身份证号码会是什么。

有什么建议吗?

谢谢,

大卫

4 个答案:

答案 0 :(得分: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开头   信([A-Za-z]),可以遵循   任意数量的字母,数字   ([0-9]),连字符(“ - ”),下划线   (“_”),冒号(“:”)和句号(“。”)

答案 1 :(得分:0)

您可以获取id属性并从中获取数字:

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

答案 2 :(得分: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');
});

答案 3 :(得分:0)

我认为您可以尝试在生成代码时注册javascript函数。我用gridview做了类似的事情。

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