top of page

Dynamic JavaScript AI Validation



In this tutorial, I’ll demonstrate how to implement conditional rules with JavaScript in Knack. Using my Classics Clips app, I’ll show you how to dynamically add a character count validation for a notes field, ensuring users can’t exceed 200 characters — all achieved with the help of ChatGPT.


Sign up to Knack for Free - Affiliate Link


Add to JavaScript

// Validate Character Count for Client Notes for view_8

$(document).on('knack-view-render.view_8', function (event, view) { // Replace with your view number


const fieldId = 'field_9'; // Replace with your field ID

const textField = $(`#${fieldId}`); // Select the text field by its ID


$('#char-count').remove(); // Remove any existing counter to prevent duplicates


const counter = $('<div id="char-count">Characters entered: 0 (maximum count is 200)</div>');

textField.after(counter); // Append the counter below the text field


const submitButton = $('.kn-button.is-primary'); // Select the button with class 'kn-button is-primary'


function updateCharCount() {

const charCount = textField.val().length;

$('#char-count').text(`Characters entered: ${charCount} (maximum count is 200)`);


if (charCount > 200) {

submitButton.prop('disabled', true); // Disable the button if the count exceeds 200


// Update colors as needed

textField.css({

'background-color': '#FBF4F5', // Set a light red background (update color as needed)

'color': '#A4454A' // Set a darker red text color (update color as needed)

});

} else {

submitButton.prop('disabled', false); // Enable the button if within the limit


// Reset styles to default if within the limit

textField.css({

'background-color': '', // Remove background color

'color': '' // Reset text color

});

}

}


updateCharCount(); // Initial count update

textField.on('input', updateCharCount); // Attach the update function

});



// Validate Character Count for Client Notes for view_204

$(document).on('knack-view-render.view_204', function (event, view) { // Replace with your view number


const fieldId = 'field_9'; // Replace with your field ID

const textField = $(`#${fieldId}`); // Select the text field by its ID


$('#char-count').remove(); // Remove any existing counter to prevent duplicates


const counter = $('<div id="char-count">Characters entered: 0 (maximum count is 200)</div>');

textField.after(counter); // Append the counter below the text field


const submitButton = $('.kn-button.is-primary'); // Select the button with class 'kn-button is-primary'


function updateCharCount() {

const charCount = textField.val().length;

$('#char-count').text(`Characters entered: ${charCount} (maximum count is 200)`);


if (charCount > 200) {

submitButton.prop('disabled', true); // Disable the button if the count exceeds 200


// Update colors as needed

textField.css({

'background-color': '#FBF4F5', // Set a light red background (update color as needed)

'color': '#A4454A' // Set a darker red text color (update color as needed)

});

} else {

submitButton.prop('disabled', false); // Enable the button if within the limit


// Reset styles to default if within the limit

textField.css({

'background-color': '', // Remove background color

'color': '' // Reset text color

});

}

}


updateCharCount(); // Initial count update

textField.on('input', updateCharCount); // Attach the update function

});


5 views0 comments

Recent Posts

See All

Comments

Rated 0 out of 5 stars.
No ratings yet

Add a rating
bottom of page