без библиотеки:
input[type=text] + span {
display: none;
}
input[type=text]:focus + span {
display: inline;
}
<input type="text" title="Here is my title" value="smth"/> <span>Here is my title</span>
Использование сценария для получения заголовка
function insertAfter(el, referenceNode) {
referenceNode.parentNode.insertBefore(el, referenceNode.nextSibling);
}
window.addEventListener("load",() => {
document.querySelectorAll("input[type=text]").forEach(inp => {
let span = document.createElement('span');
span.innerHTML = inp.getAttribute("title");
insertAfter(span, inp);
})
})
input[type=text] + span {
display: none;
}
input[type=text]:focus + span {
display: inline;
}
<input type="text" title="Here is my title 1" value="smth"/><br/>
<input type="text" title="Here is my title 2" value="smth"/><br/>
<input type="text" title="Here is my title 3" value="smth"/><br/>