2011-02-11 137 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]'); 
    }); 
});