Обнаружьте программатические изменения на поле выбора HTML

Первый пример требует меньше служебного для управления строкой (т.е. просто указатель на ТЕКСТОВЫЙ раздел). Кроме того, второй метод может потребовать, чтобы выделение "кучи" также скопировало строковый литерал в std:string буфер класса. Так, Вы закончили бы с двумя копиями данных.

5
задан Mat 29 July 2012 в 08:25
поделиться

3 ответа

Было бы лучше, если вы можете расширить / изменить фреймворк так, чтобы он давал перехватчик / обратный вызов при изменении параметров выбора (одним из способов могло бы быть использование динамических возможностей js для уклонения от типа это внутри?).

В противном случае есть неэффективное решение - опрос. Вы можете настроить вызов setTimeout / setInteval, который опрашивает желаемый элемент select option dom и запускает собственный обратный вызов, когда он обнаруживает, что что-то изменилось.

что касается ответа на ваш вопрос

Есть ли способ сделать вызов test () myfunction () без изменения test () (or adding an event on the button)?

yes, by using jquery AOP http://plugins.jquery.com/project/AOP , it gives an easy-ish solution.

<body>
<p>
<select id="sel1" onchange="myfunction();"><option value="v1">n1</option></select>
<input type="button" onclick="test();" value="Add an option and select it." />
</p>
<script type="text/javascript">
    var inc = 1;
    var sel = document.getElementById('sel1');
    function test() {
        inc++;
        var o = new Option('n'+inc, inc);
        sel.options[sel.options.length] = o;
        o.selected = true;
        sel.selectedIndex =  sel.options.length - 1;
    }

    function myfunction() {
        document.title += '[CHANGED]';
    }

    //change to aop.after if you want to call afterwards       
      jQuery.aop.before( {target: window, method: 'test'}, 
        function() { 
          myfunctino(); 
        }
      );
</script>
</body>
4
ответ дан 14 December 2019 в 19:21
поделиться

The answer is .... no.

The DOM only fires the onchange event as a result of user action not code. It does not provide any additional events to hook in this regard.

You will need to customise the framework or drop your requirement.

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

гм ...

вы можете получить доступ к событию «onpropertychange», оно содержит свойство в аргументах события, чтобы определить, какое свойство было изменено.

Он обнаруживает изменения как 'selectedIndex', так и 'value' - просто case test 'propertyName' Я сейчас работаю с фреймворком ASP.NET js, вот для этого простой код копирования и вставки:

1) define обработчик:

this._selectionChangedHandler = null;

2) назначить обработчик

this._selectionChangedHandler = Function.createDelegate (this, this._onSelectionChanged);

3) прикрепить обработчик к событию

$ addHandler (element, "propertychange", this._selectionChangedHandler);

4) создать функцию

_onSelectionChanged: function(ev) {

if (ev.rawEvent.propertyName == "selectedIndex")
        alert('selection changed');
},
0
ответ дан 14 December 2019 в 19:21
поделиться
Другие вопросы по тегам:

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