我有一个表单,其中包含由服务器端代码动态生成的字段名称。 我试图让JQuery操纵这些字段的值,但遇到了麻烦。
生成的字段使用唯一的ID号进行配对示例:
名为option_3030的单选按钮 将有一个amount_3030字段
动态创建的字段数也是未知的(可能有一个或十个输入对 - 全部名为option_xxxx和amount_xxxx。
我要做的是在选中(或取消选中)3030_option时使用jquery设置3030_amount字段的值。问题是,我不知道实际的身份证号码会是什么。
有什么建议吗?
谢谢,
大卫
答案 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 ")" );