Как я программно изменяю выбор так, чтобы он запустил свое onchange поведение?

Получите indexpath выбранной строки. Перезагрузите таблицу. В heightForRowAtIndexPath методе UITableViewDelegate, набор высота строки, выбранной к различной высоте и для других, возвращают нормальную высоту строки

6
задан Nosredna 3 August 2009 в 21:35
поделиться

5 ответов

Имя onchange может ввести в заблуждение, если вы не понимаете, что событие change и изменяемое значение - не одно и то же. Событие изменения происходит, когда пользователь изменяет значение в браузере. Я считаю, что вы можете запустить событие вручную, вызвав dojo.byId ('mySel'). Onchange () после того, как измените значение программным способом. (Однако вам может потребоваться определить функцию, которая вызывает alert . Я сам этого не делал.)

6
ответ дан 8 December 2019 в 17:25
поделиться

Это изменит значение, но не вызовет событие onchange. Каждый раз, когда вы изменяете элемент с помощью JavaScript, он не запускает событие (предотвращает возникновение проблем с рекурсией *).

Если вы настроили такой обработчик событий.

function myHandler(){
  //do whatever stuff here
  changeColor( dojo.byId('mySel') );
}

, вы можете вызвать его отдельно, после того, как вы установите значение программно.

Примечание (*): я не эксперт по додзё ... поэтому я предполагаю, что они не «добавили» автоматический вызов обработчиков событий, когда вы устанавливаете значение из JavaScript.

3
ответ дан 8 December 2019 в 17:25
поделиться

Вы можете взглянуть на эти вопросы и ответы на них: они могут помочь:

2
ответ дан 8 December 2019 в 17:25
поделиться

Попробуйте вместо этого назначить selectedIndex.

0
ответ дан 8 December 2019 в 17:25
поделиться

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

Он обнаруживает изменения как 'selectedIndex', так и 'value' - просто протестируйте 'propertyName'

<select id="mySel" onpropertychange="dothis(event);">
    <option value="a">a</option>    
    <option value="b">b</option>
</select>

function dothis(event)
{

    if (event.propertyName == "selectedIndex")
            alert('selection changed');
}

прямо у меня в голове ... (в настоящее время используется фреймворк asp.net js, который немного отличается)

1
ответ дан 8 December 2019 в 17:25
поделиться
Другие вопросы по тегам:

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