Эта ошибка иногда происходит, потому что происходит бесконечный цикл, и это ваш случай. Очень важно понимать разницу между обработчиком событий onValueChange и обработчиком событий onValueEdit .
onValueChange :
Этот скрипт будет запускаться на клиенте всякий раз, когда изменяется значение этого виджета. На виджет можно ссылаться с помощью параметра widget, и новое значение виджета сохраняется в newValue.
onValueEdit :
Этот скрипт будет запускаться на клиенте всякий раз, когда значение этого виджета редактируется пользователем. На виджет можно ссылаться с помощью параметра widget, и новое значение виджета сохраняется в newValue. В отличие от onValueChange (), это выполняется только тогда, когда пользователь изменяет значение виджета; он не будет запускаться в ответ на привязки или когда значение задано программно.
Почему это происходит?
Поскольку ваша логика установлена в обработчике события onValueChange , она будет срабатывать каждый раз, когда значение виджета dateBox изменяется, даже программно; Следовательно, form.otDateBox.value = null;
вызывает логику снова и снова. Причина, по которой он вызывается снова и снова, заключается в логике сравнения:
if(otdate <= pastdate)
Здесь значение дата стало null , которое при преобразовании в число Number(null)
равно 0 (ноль). Значение pastdate , очевидно, является числом больше нуля, например, 1555413900712 . Очевидно, что ноль меньше или равен 1555413900712, и поэтому вы запускаете бесконечный цикл.
Итак, в итоге, есть только один способ это исправить. Установите логику внутри обработчика событий onValueEdit вместо onValueChange .