function tiValidateOptString(value, inpName, allowBlank = true, allowNum = false) {
        let isValid = true
        let f
        try {
            f = value.slice(0, 1)
        } catch (e) {}

        if (allowBlank === false && value === '') {
            isValid = false
            // console.log({ name: inpName, why: 'Blank failed', value: value, allowBlank: allowBlank })
        }

        if ( allowNum === false && (value !== '' && !isNaN(Number(value))) ) {
            isValid = false
            // console.log({ name: inpName, why: 'Num failed', value: value, allowNum: allowNum })
        }

        if ( f === '{' || f === '[' ) isValid = false

        $(`#node-input-${inpName} + .red-ui-typedInput-container`).css('border-color', isValid ? 'var(--red-ui-form-input-border-color)' : 'red')
        return isValid
    }
Validate a typed input as a string
Must not be JSON. Can be a number only if allowNum=true. Can be an empty string only if allowBlank=true
Sets typedInput border to red if not valid since custom validation not available on std typedInput types
@param {string} value Input value
@param {string} inpName Input field name
@param {boolean} allowBlank true=allow blank string. Default=true
@param {boolean} allowNum true=allow numeric input. Default=false
@returns {boolean} True if valid