2011-02-11 145 views
3

对于my project我一直在努力。我有一段Javascript代码,它将文本插入到输入元素中,并且它的标签已被双击。缩短Javascript代码

$(document).ready(function() { 
    $('#name-label').dblclick(function(){ 
     $("#name").val('[b][color="#FF0000"]Please Submit![/color][/b]'); 
    }); 
}); 

但我希望这段代码能够与多个字段一起工作,而不需要一遍又一遍地复制和粘贴代码。我希望插入的文本保持不变。

这里有标签和输入ID的我想用:

标签/输入

name-label/name 
image-label/image 
quest-label/quest 
price-label/price 
ge-label/ge 
halch-label/halch 
lalch-label/lalch 
details-label/details 
examine-label/examine 
location-label/location 
stats-label/stats 
keywords-label/keywords 

回答

7
$(document).ready(function() { 
    $('label[id$="label"]').dblclick(function(){ 
     $('#' + this.id.split('-')[0]).val('[b][color="#FF0000"]Please Submit![/color][/b]'); 
    }); 
}); 

1 - 绑定与标识ending with '标签' 的所有元素。

2 - 由于您对ID属性遵循相同的约定,因此通过从单击的ID中提取第一个单词并预先加上'#'以形成ID选择器来查找正确的元素。

+0

我一定要改变任何事情来得到这个工作? – Ambo100 2011-02-11 16:00:42

0

创建element-id/object组合的映射并将函数ptr附加到它。

0

此代码采用点击标签,并使用for属性查找要填充的相应<input>字段。

$(document).ready(function() { 
    $("label").dblclick(function() { 
     $("#" + $(this).attr("for")).val('[b][color="#FF0000"]Please Submit![/color][/b]'); 
    }); 
}); 
0

喜欢的东西:

 
function insertSubmitString(label_id, id) { 
    $('#' + label_id).dblclick(function(){ 
     $('#' + id).val('[b][color="#FF0000"]Please Submit![/color][/b]'); 
    }); 
}; 

function insertAllSubmitStrings() { 
    insertSubmitString('name-label', 'name'); 
    insertSubmitString('image-label', 'image'); 
    insertSubmitString('quest-label', 'quest'); 
    // and so on 
}; 

$(document).ready(insertAllSubmitStrings()); 
0
$(document).ready(function() { 
    $('label').dblclick(function(){ 
     var inp = $(this).attr('id').split('-'); 
     $("#"+inp[0]).val('[b][color="#FF0000"]Please Submit![/color][/b]'); 
    }); 
});