Поле ввода имеет id
, равное username
, а не output
, поэтому
onchange="form.output.value=
не удается.Изменить ссылки на output
на ссылки на username
:
function toTitleCase(str) {
return str.replace(
/\w\S*/g,
function(txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
}
);
}
<div class="form">
<h4>Part of a form</h4>
<form class="form" name="form" method="post">
<label for="username"><span class="required">*</span>Username:</label>
<input id="username" type="text" name="username" autofocus onchange="form.username.value=toTitleCase(this.value)" onkeyup="form.username.value=toTitleCase(this.value)">
<input class="login" type="submit" value="Save">
</form>
</div>
Еще лучше использовать подходящий обработчик событий:
const input = document.querySelector('#username');
const handler = () => {
input.value = toTitleCase(input.value);
};
input.onchange = handler;
input.onkeyup = handler;
function toTitleCase(str) {
return str.replace(
/\w\S*/g,
function(txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
}
);
}
<div class="form">
<h4>Part of a form</h4>
<form class="form" name="form" method="post">
<label for="username"><span class="required">*</span>Username:</label>
<input id="username" type="text" name="username" autofocus>
<input class="login" type="submit" value="Save">
</form>
</div>