I need to make a text input field (phone number) length of at least 10 digits during checkout using Bigcommerce. I am using MutationObserver and the input field is being observed but I can not detect the changes. Please see code below:
<script>
(function(win) {
'use strict';
var listeners = [],
doc = win.document,
MutationObserver = win.MutationObserver || win.WebKitMutationObserver,
observer;
function ready(selector, fn) {
// Store the selector and callback to be monitored
listeners.push({
selector: selector,
fn: fn
});
if (!observer) {
// Watch for changes in the document
observer = new MutationObserver(check);
observer.observe(doc.documentElement, {
childList: true,
subtree: true
});
}
// Check if the element is currently in the DOM
check();
}
function check() {
// Check the DOM for elements matching a stored selector
for (var i = 0, len = listeners.length, listener, elements; i < len; i++) {
listener = listeners[i];
// Query for elements matching the specified selector
elements = doc.querySelectorAll(listener.selector);
for (var j = 0, jLen = elements.length, element; j < jLen; j++) {
element = elements[j];
// Make sure the callback isn't invoked with the
// same element more than once
if (!element.ready) {
element.ready = true;
// Invoke the callback with the element
listener.fn.call(element, element);
}
}
}
}
// Expose `ready`
win.ready = ready;
})(this);
ready('#phoneInput', function(element) {
// do something
if (element.value.length < 10) {
element.style.borderColor = 'red';
return;
}
// otherwise, set it to green
element.style.borderColor = 'green';
});
</script>
The idea is that the user gets an alert if the input field value is less than 10 digits whenever the user finishes typing and places focus on a different field. Thank you in advance. Other ideas are welcome and appreciated.