缩短Javascript代码

3
我正在进行的项目中,有一段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
5个回答

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

1 - 绑定到所有以“label”结尾的ID为{{link1}}的元素。

2 - 由于您遵循相同的约定来命名ID属性,因此可以通过从单击的ID中提取第一个单词并在前面添加“#”来形成ID选择器来找到正确的元素。


还有一件事。你能让它排除带下拉菜单的输入字段吗? - Ambo100
1
你的意思是如果它是一个<select>,什么也不做吗? - karim79

0
这段代码会获取被点击的标签,并使用 for 属性来找到相应的 <input> 字段进行填充。
$(document).ready(function () {
    $("label").dblclick(function () {
        $("#" + $(this).attr("for")).val('[b][color="#FF0000"]Please Submit![/color][/b]');
    });
});

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

0
创建一个元素ID/对象组合的映射,并将函数指针附加到其中。

0

类似这样:

function insertSubmitString(label_id, id) {
    $('#' + label_id).dblclick(function(){
        $('#' + id).val('[b][color="#FF0000"]请提交![/color][/b]');
    });
};
function insertAllSubmitStrings() { insertSubmitString('name-label', 'name'); insertSubmitString('image-label', 'image'); insertSubmitString('quest-label', 'quest'); // 等等 }; $(document).ready(insertAllSubmitStrings());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接