Переключение фокуса по клику на динамически добавляемый ввод текста - PullRequest
2 голосов
/ 07 декабря 2010

Позвольте мне предвосхитить этот вопрос, сказав, что я новичок jQuery - только начинаю процесс обучения.

Я сейчас работаю над интернет-магазином. Одной из функций, которые мы интегрировали с корзиной покупок, является поле «быстрого добавления» (id = "cc").

Под полем «быстрое добавление» находится таблица, которая динамически заполняется строками элементов. В каждой из этих динамически добавляемых строк товара есть текстовое поле "qty" (id = "qtycart") на случай, если клиент захочет изменить их количество после добавления товара в корзину.

Вот что я хочу сделать:

Я хочу, чтобы клиент мог добавить текст в поле ввода "быстрого добавления" и нажать кнопку "Отправить". После нажатия кнопки «Отправить» я хочу, чтобы фокус изменился с этого ввода на ввод «qty» в недавно добавленной строке ниже.

Имеет ли это смысл?

Вот простая функция, которую я собрал, но я явно что-то упускаю:

$("#cc").live("click", function(){
$("#qtycart:text:visible:last").focus();
});

Большое спасибо за ваше время!

Ответы [ 2 ]

2 голосов
/ 07 декабря 2010

У вас в DOM (qtycart) дублирующиеся идентификаторы. Возможно, вам следует использовать вместо этого имя класса 'qtycart':

$("#cc").live("click", function(){
    $(".qtycart:text:visible:last").focus();
});

Метод .focus() работает, если вы выбираете нужный элемент. Вот небольшая демонстрация, чтобы имитировать то, что вы пытаетесь сделать: http://jsfiddle.net/6VZf3/2/

А вот что говорит W3C об атрибуте ID :

id = имя [CS]

Этот атрибут присваивает имя элементу. это имя должно быть уникальным в документе.

0 голосов
/ 07 декабря 2010

Мне кажется, я понимаю ваш вопрос. Посмотрите на этот пример:

http://jsbin.com/ahusi4/2/edit

Вы можете ввести новый элемент, и поле ввода кол-во получает фокус.

Надеюсь, это поможет.

Bob

...