我有两张桌子。我想将值从一个表镜像到另一个表。我目前的实施是:
<script type="text/javascript">
$("#textfield1, #textfield2, #textfield3, #select1").on("keyup keypress blur click change", function(event){
$("input[type='text']#copytextfield1").val( $("[type='text']#textfield1").val() );
$("input[type='text']#copytextfield2").val( $("[type='text']#textfield2").val() );
$("input[type='text']#copytextfield3").val( $("[type='text']#textfield3").val() );
$("input[type='text']#copytextfield4").val( $("select#select1").val() );
});
</script>
如您所见,名称非常相似。唯一的区别是镜像元素具有“复制”功能。你能提出一些方法来提高效率吗?也许利用命名对话?
答案 0 :(得分:2)
可以这样做:
<script type="text/javascript">
$("#textfield1, #textfield2, #textfield3, #select1").on("keyup keypress blur click change", function(event){
for (var i = 1; i <= 3; i++) {
$("#copytextfield" + i).val( $("#textfield" + i).val() );
}
$("input[type='text']#copytextfield4").val( $("select#select1").val() );
});
</script>
但是选择的ID会导致一些麻烦,所以如果你将所有字段的id更改为input1 - input4,那么它可能会被重构。
<script type="text/javascript">
$("#input1, #input2, #input3, #input1").on("keyup keypress blur click change", function(event){
for (var i = 1; i <= 4; i++) {
$("#copytextfield" + i).val( $("#input" + i).val() );
}
});
</script>
答案 1 :(得分:0)
请尝试这样做:为您制作演示: http://jsfiddle.net/6hwLS/4/
的想法是从最后获取数值,并将它们与$(this)
对象一起使用:
此外,您不需要input[type='text']
或select
,因为id
是唯一的,并且唯一地标识DOM元素。
希望这有帮助,:)
喜欢这样:
$("#textfield1, #textfield2, #textfield3, #select1")
.on("keyup keypress blur click change", function(event) {
var theNum = parseInt($(this).attr("id").match(/\d+$/)); // will return last numeric value
$("#copytextfield"+theNum).val($("#textfield"+theNum).val());
if( theNum === 4) {
$("#copytextfield"+theNum).val($("#select1").val());
}
});