Я пытаюсь определить, когда дата изменилась в обычном поле "дата"
Видел несколько сообщений на форуме о том, как это можно сделать с помощью текстовых полей и выпадающих списков, но это не работает для полей даты.
Также пробовал:
'displayParams' =>
массив (
'javascript' => 'onchange = "checkStatusOption (this)"',
),
В editviewdefs.php, но это не сработало (хотя и работает с текстовыми полями)
Самое близкое, что у меня есть, это просто отслеживание каждого клика на экране и проверка состояния поля даты до и после, но это, очевидно, не очень элегантное решение
Вот код из расширенного режима редактирования
function display() {
parent::display();
$js = <<<EOT
<script type="text/javascript" language="JavaScript">
// Capture initial state
calendar_before = document.getElementById("contract_date_c").value;
// Wait for any click to take place anywhere on the screen
$(document).click(function() {
// Capture state after we clicked somewhere
calendar_after = document.getElementById("contract_date_c").value;
// Compare the before and after
if(calendar_before != calendar_after) {
// Change detected
alert("Something's changed eh?" + calendar_before +" "+ calendar_after);
}
// Set the new state of the before_calendar
calendar_before = document.getElementById("contract_date_c").value;
});
}
</script>
EOT;
// now I output the javascript
echo $js;
}
UPDATE:
Я также попробовал предлагаемое решение
1) Создает файл custom / modules / un_inventory / contract_date_c_change.js и помещает в него следующее:
function yourCustomFunction(formElement){
console.log(formElement);
}
2) Включил ссылку на этот файл в файле метаданных (убедился, что он загружается):
array (
'file' => 'custom/modules/un_inventory/contract_date_c_change.js',
),
3) Прикрепил обновление Обратный звонок к полю:
array (
'name' => 'contract_date_c',
'label' => 'LBL_CONTRACT_DATE',
// Checks if this field got filled up and shows hidden form field
'displayParams' =>
array (
'updateCallback' => 'yourCustomFunction();',
),
),
Но ничего не происходит, когда я изменяю это поле даты