2011-07-26 40 views
0

使用这个热键插件,https://github.com/jeresig/jquery.hotkeys,我有一些问题,下面的代码:的jQuery插件热键

jQuery(document).ready(function($) { 

    function insert_tag(tag){ 
     $('#water_chemistry').val($('#water_chemistry').val()+' ['+tag+'] '); 
    } 

    $(document).bind('keydown', 'alt+ctrl+1', insert_tag("temp_min")); 
    $(document).bind('keydown', 'alt+ctrl+2', insert_tag("temp_max")); 
    $(document).bind('keydown', 'alt+ctrl+3', insert_tag("pH_min")); 
    $(document).bind('keydown', 'alt+ctrl+4', insert_tag("pH_max")); 
    $(document).bind('keydown', 'alt+ctrl+5', insert_tag("hardness_min")); 
    $(document).bind('keydown', 'alt+ctrl+6', insert_tag("hardness_max")); 
    $(document).bind('keydown', 'alt+ctrl+7', insert_tag("conductivity_min")); 
    $(document).bind('keydown', 'alt+ctrl+8', insert_tag("conductivity_max")); 

    $('a#temp_min').click(insert_tag("temp_min")); 
    $('a#temp_max').click(insert_tag("temp_max")); 
    $('a#pH_min').click(insert_tag("pH_min")); 
    $('a#pH_max').click(insert_tag("pH_max")); 
    $('a#hardness_min').click(insert_tag("hardness_min")); 
    $('a#hardness_max').click(insert_tag("hardness_max")); 
    $('a#conductivity_min').click(insert_tag("conductivity_min")); 
    $('a#conductivity_max').click(insert_tag("conductivity_max")); 

}); 

如果我刷新页面,所有的标签插入文本区域。

我假设我弄乱了我的语法,但我不知道如何!

在此先感谢。

回答

4

第一关:

$('a#hardness_max').click(insert_tag("hardness_max")); 
// is equivalent to: 
var tmp = insert_tag("hardness_max"); 
$('a#hardness_max').click(tmp); // this calls the click handler with the result of the insert_tag function 

什么你可能想要的是:

$('a#hardness_max').click(function() { insert_tag("hardness_max"); }); 
// This function registers the click callback 

至于ctr+alt+1,这是相同的情况下,但我也想补充文本框,使他们能够做的快捷方式在文本框中:

$(document).add('#water_chemistry').bind('keydown', 'alt+ctrl+1', function() { insert_tag("temp_min"); }); 

所以最后的结果是:

jQuery(document).ready(function($) { 

    function insert_tag(tag){ 
     $('#water_chemistry').val($('#water_chemistry').val()+' ['+tag+'] '); 
    } 

    var docAndTextarea = $(document).add('#water_chemistry'); 

    docAndTextarea.bind('keydown', 'alt+ctrl+1', function() { insert_tag("temp_min"); }); 
    docAndTextarea.bind('keydown', 'alt+ctrl+2', function() { insert_tag("temp_max"); }); 
    docAndTextarea.bind('keydown', 'alt+ctrl+3', function() { insert_tag("pH_min"); }); 
    docAndTextarea.bind('keydown', 'alt+ctrl+4', function() { insert_tag("pH_max"); }); 
    docAndTextarea.bind('keydown', 'alt+ctrl+5', function() { insert_tag("hardness_min"); }); 
    docAndTextarea.bind('keydown', 'alt+ctrl+6', function() { insert_tag("hardness_max"); }); 
    docAndTextarea.bind('keydown', 'alt+ctrl+7', function() { insert_tag("conductivity_min"); }); 
    docAndTextarea.bind('keydown', 'alt+ctrl+8', function() { insert_tag("conductivity_max"); }); 

    $('a#temp_min').click(function() { insert_tag("temp_min"); }); 
    $('a#temp_max').click(function() { insert_tag("temp_max"); }); 
    $('a#pH_min').click(function() { insert_tag("pH_min"); }); 
    $('a#pH_max').click(function() { insert_tag("pH_max"); }); 
    $('a#hardness_min').click(function() { insert_tag("hardness_min"); }); 
    $('a#hardness_max').click(function() { insert_tag("hardness_max"); }); 
    $('a#conductivity_min').click(function() { insert_tag("conductivity_min"); }); 
    $('a#conductivity_max').click(function() { insert_tag("conductivity_max"); }); 

}); 

这里是的jsfiddle:

FIDDLE!

+0

唉唉,我知道这是愚蠢的一些语法问题。现在这是一种享受 - 非常感谢你鲍勃。 – dunc

+0

@dunc没问题:-) –

+0

有趣的是,当我使用jsfiddle时,当我点击任何键盘按钮时,textarea被所有标签填充。 –