Изменить ключ ввода с помощью jQuery? - PullRequest
0 голосов
/ 27 мая 2009

Я использую несколько наборов кадров на странице, и каждый набор кадров имеет соответствующую кнопку для выполнения обратной передачи на стороне сервера / клиента. Я хотел изменить клавишу ввода по умолчанию, чтобы выбрать правильную кнопку, и это было мое решение с использованием jQuery.

    $("#<%= SearchCustomers.ClientID %>").find(":input").click(function() { $(this).parents("FIELDSET").addClass("default"); }).blur(function() { $(this).parents("FIELDSET").removeClass("default"); });
    $("#<%= SearchGroups.ClientID %>").find(":input").click(function() { $(this).parents("FIELDSET").addClass("default"); }).blur(function() { $(this).parents("FIELDSET").removeClass("default"); });


    $(document).keypress(function(e) {
        if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
            $(".default").find(":submit,:button").click();
            return false;
        }
    });

Это работает отлично, но я искал способы улучшить это. В данный момент код зависит от того, что я установил для framesets значение «runat = server», поэтому я могу получить доступ к свойству «ClientID» и вставить идентификатор в мой JavaScript. Это делает код немного менее пригодным для повторного использования, поэтому мне было любопытно, если у кого-то есть идея получше ...

Спасибо за ваши комментарии!

1 Ответ

1 голос
/ 27 мая 2009

Поскольку ваши первые две строки очень похожи, я бы сократил их до:

$('FIELDSET').find(":input").click(function() {
  $(this).parents("FIELDSET").addClass("default"); }).blur(function() {
  $(this).parents("FIELDSET").removeClass("default"); });

Если на странице нет других наборов фреймов, кроме двух, которые вам нужны, это должно быть хорошо. Тогда вам не нужно иметь ClientID.

Если вы не можете гарантировать, что это только две на странице, то я думаю, что вам действительно нужны runat = server и ClientID - потому что вам действительно нужно уникально идентифицировать эти конкретные два набора фреймов

РЕДАКТИРОВАТЬ: В качестве альтернативы, вы можете пометить наборы полей, которые вы хотите, чтобы это поведение проявлялось в определенном классе:

<fieldset class='UseAutoEnterKey'> ....

Затем вы можете добавить поведение все в одном с помощью селектора класса:

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