Как я могу клонировать вход, который использует плагин Masked Input? - PullRequest
1 голос
/ 03 декабря 2010

Я использую плагин jQuery Masked Input , чтобы помочь пользователям вводить действительные данные для таких полей, как даты, почтовые индексы, номера телефонов и т. Д. (Я также использую Validate дляубедитесь, что форма не может быть отправлена, если что-то не так и предлагает подсказки.)

Моя проблема в том, что мне нужно иметь возможность клонировать ряд входных данных, в том числе те, которые используют маскированный ввод.Обычно jQuery clone(true) копирует любые связанные события вместе с клонированными узлами DOM, но по какой-то причине это не работает с замаскированным вводом: нажатие на клонированный ввод приводит к его фокусировке на исходном.

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

У кого-нибудь есть обходной путь? Я думаю, что я мог бы вызвать unmask() на новом входе, затем снова сделать mask(), чтобы применить правила из оригинала, но я не хочу жестко кодировать, что это за правила;Я хочу, чтобы их определяли по исходным данным, чтобы мне нужно было кодировать их только в одном месте.

1 Ответ

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

работа с шаблоном плагина jQuery, базовый пример:

JS:

var 
  id = 0,
  addNewItem = function() {

   var 
       itemNew =  $('#template-item').tmpl({id: id};

   id++;

   $(itemNew).find('.input-a').XPlugin(); // applied any plugin

   $(itemNew).appendTo('#myTable tbody');

  };

для использования в любом месте. или когда происходит событие

addNewItem();

Редактирование и обновление проблемы

Проблема заключается в следующем, этот плагин сохраняет ссылку на элемент (вход) в переменную "var input = $ (this);" (строка 85 из "jquery.maskedinput-1.2.2.js"), затем использует ее для всех событий и функции. Когда вы хотите клонировать элемент, внутри плагина ссылается на первый элемент. По этой причине этот плагин не может быть клонирован.

...