addToValidate for Custom Dropdown Condition

@cherub-chum
You use jQuery function:

$(document).ready(function() {

and you code is running after scrips on page.

I made full test. It’s work!
Look at the codes below.

  1. file: custom/modules/Tasks/metadata/editviewdefs.php
...
'templateMeta' => array (
...
      'includes' = array(
          0 => array(
          'file' => 'modules/Tasks/valid.js',
          ),
       ),
...
),

modules/Tasks/valid.js

$(document).ready(function() {
    // control change filed: "description"
    $("#description").on('change', function(){
        // check data in "description" for valid in filed "parent_id"
        if($(this).val() !== ''){
            // make sumbol "*" for field "Related to"
            var required_switch = document.createElement('span');
            required_switch.className = 'required';
            required_switch.innerHTML = '*';
            document.getElementById('parent_name').parentElement.previousElementSibling.appendChild(required_switch);
            let msg = document.getElementById('parent_name').parentElement.previousElementSibling.innerHTML.split(':')[0];
            // remove old record about field "parent_id"
            removeFromValidate('EditView',  'parent_id'); 
            // switch on valid and new message for field "parent_id"
            addToValidate('EditView', 'parent_id', 'varchar', true, msg);
        }else{
            // remove sumbol "*" for field "Related to"
            let msg = document.getElementById('parent_name').parentElement.previousElementSibling.innerHTML.split(':')[0];
            document.getElementById('parent_name').parentElement.previousElementSibling.innerHTML = msg+':';
            // remove old record about field "parent_id"
            removeFromValidate('EditView',  'parent_id');
            // switch off valid and new message for field "parent_id"
            addToValidate('EditView', 'parent_id', 'varchar', false, msg);
        }
    });
});
1 Like