JQuery плагин горячих клавиш - PullRequest
0 голосов
/ 27 июля 2011

Используя этот плагин горячих клавиш, https://github.com/jeresig/jquery.hotkeys, У меня возникли некоторые проблемы со следующим кодом:

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"));

});

Если я обновлю страницу, все теги будут вставлены в текстовое поле.

Полагаю, я испортил синтаксис, но не знаю, как!

Заранее спасибо.

1 Ответ

4 голосов
/ 27 июля 2011

Сначала:

$('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!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...