События JavaScript: быть уведомленным относительно изменений во <вход> значение управления

Если вы просто хотите, чтобы строки нарушали это условие, используйте groupby и проверьте с помощью nunique:

df[df.groupby('COL1').COL2.transform('nunique') > 1]

Или с groupby, nunique и map:

df[df.COL1.map(df.groupby('COL1').COL2.nunique()) > 1]

  COL1  COL2
1    B     2
2    B     2
3    B     3

Если вы хотите отобразить значение COL1 на значения COL2, вы можете использовать дополнительные groupby и apply:

df[df.groupby('COL1').COL2.transform('nunique') > 1].groupby('COL1').COL2.apply(set)

COL1
B    {2, 3}
Name: COL2, dtype: object

И, наконец, если все, что вам нужно, это «количество элементов» для> 1 значений COL1, используйте

df.groupby('COL1').COL2.nunique().to_frame().query('COL2 > 1')

      COL2
COL1      
B        2
8
задан Daniel Magliola 28 September 2008 в 23:16
поделиться

6 ответов

Поскольку Вы подразумевали, изменение (и другие события) только стреляют, когда пользователь принимает некоторые меры. Сценарий, изменяющий вещи, не запустит событий. Ваше единственное решение состоит в том, чтобы найти некоторый рычаг в управление, которое можно сцепить до слушателя.

Вот то, как я сделал бы это:

basicDatePicker.selectDate = basicDatePicker.selectDate.wrap(function(orig,year,month,day,hide) {
  myListener(year,month,day);
  return orig(year,month,day,hide);
});

Это основано на поверхностном взгляде с Firebug (я не знаком с компонентом). Если будут другие способы выбрать дату, то необходимо будет перенести те методы также.

5
ответ дан 5 December 2019 в 14:07
поделиться

Кроме того, чтобы обходить проблему как то, как Ноа объяснил, Вы могли также просто создать таймер, который проверяет значение каждая несколько сотен миллисекунд.

0
ответ дан 5 December 2019 в 14:07
поделиться

IE имеет onpropertychange событие, которое могло использоваться с этой целью.

Для реальных веб-браузеров (;)), существует событие мутации DOMAttrModified, но через несколько минут ценность экспериментирования в Firefox, я не смог заставить его стрелять во ввод текста, когда значение будет изменено программно (или входом обычной клавиатуры), все же оно будет стрелять, если я изменю имя входа программно. Curiouser и curiouser...

Если Вы не можете получить ту работу надежно, Вы могли бы всегда просто регулярно опрашивать значение входа:

var value = someInput.value;

setInterval(function()
{
    if (someInput.value != value)
    {
        alert("Changed from " + value + " to " + someInput.value);
        value = someInput.value;
    }
}, 250);
2
ответ дан 5 December 2019 в 14:07
поделиться

В зависимости от того, как был записан внешний JavaScript, Вы могли всегда переписывать соответствующие части внешнего сценария в Вашем сценарии и иметь его, перезаписывают внешнее определение так, чтобы событие изменения было инициировано.

Я должен был сделать это прежде со сценариями, которые находились вне моего контроля.

Просто необходимо найти внешнюю функцию, скопировать ее в целом как новую функцию с тем же именем и переписать сценарий, чтобы сделать то, к чему Вы хотите ее.

Конечно, если сценарий был записан правильно с помощью закрытий, Вы не сможете изменить его слишком легко...

1
ответ дан 5 December 2019 в 14:07
поделиться

Я должен был изменить поддающееся датировке управление paginator YUI, однажды таким образом рекомендуемое Dan. Это - грубая сила, но это работало в решении моей проблемы. Таким образом, найдите метод, пишущий в поле, скопируйте его код и добавьте, что оператор, запускающий событие изменения и в Вашем коде просто, обрабатывает то событие изменения. Просто необходимо переопределить исходную функцию с той новой версией его. Опрос, в то время как хорошо работать кажется мне намного большим решением для потребления ресурса.

0
ответ дан 5 December 2019 в 14:07
поделиться

addEventListener ("DOMControlValueChanged" будет стрелять, когда значение управления изменится, даже если это сценарием.

addEventListener ("вход" является direct-user-initiated, фильтровал версию DOMControlValueChanged.

К сожалению, DOMControlValueChanged только в настоящее время поддерживается Opera, и входная поддержка мероприятия повреждается в WebKit. Входное событие также имеет различные ошибки в Firefox и Opera.

Этот материал будет, вероятно, разрешен в HTML5 довольно скоро, fwiw.

Обновление:

С 08.09.2012 поддержка DOMControlValueChanged была отброшена из Opera (потому что это было удалено из HTML5), и 'входная' поддержка мероприятия намного лучше в браузерах (включая меньшее количество ошибок) теперь.

4
ответ дан 5 December 2019 в 14:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: