Skip to content

Instantly share code, notes, and snippets.

@webhacking
Created September 28, 2018 06:02
Show Gist options
  • Save webhacking/0b14df7bc76177ffb665d5fbd1f69f96 to your computer and use it in GitHub Desktop.
Save webhacking/0b14df7bc76177ffb665d5fbd1f69f96 to your computer and use it in GitHub Desktop.
Support html5 placeholder attribute for IE without using jquery or any dependencies.
window.initPlaceHolder = (textField) => {
const addEvent = document.addEventListener ? 'addEventListener' : 'attachEvent';
const eventPrefix = document.addEventListener ? '' : 'on';
const placeHolderClassName = 'usingPlaceHolder';
const $trim = (string) => {
return string.trim ? string.trim() : string.replace(/^\s+|\s+$/g, "");
};
const $addClassName = (element, className) => {
var elClassName = element.className;
if(elClassName)
element.className += " " + className;
else
element.className = className;
};
const $removeClassName = (element, className) => {
let elClassName = element.className;
if ( !elClassName ) {
return;
}
element.className = elClassName.replace(new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ');
};
const $hasClassName = (element, className) => {
let elClassName = element.className;
if( !elClassName ) {
return false;
}
const regex = new RegExp("(^|\\s)" + className + "(\\s|$)");
return regex.test(element.className);
};
if('placeholder' in document.createElement('input')) {
return;
}
let placeHolder = textField.getAttribute('placeholder');
if( !placeHolder ) {
return;
}
placeHolder = $trim(placeHolder);
if ( placeHolder === '' ) {
return;
}
const onBlur = () => {
if ( textField.value !== '' ) {
return;
}
textField.value = placeHolder;
$addClassName(textField, placeHolderClassName);
};
textField[addEvent](eventPrefix + 'blur', onBlur, false);
textField[addEvent](eventPrefix + 'focus', () => {
if ( $hasClassName(textField, placeHolderClassName) ) {
$removeClassName(textField, placeHolderClassName);
textField.value = "";
}
}, false);
const form = textField.form;
if ( form ) {
form[addEvent](eventPrefix + 'submit', () => {
if ( $hasClassName(textField, placeHolderClassName) ) {
textField.value = '';
}
}, false);
}
onBlur();
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment