Помогите вынести js в отдельный скрипт
Здравствуйте. Помогите, пожалуйста, вынести js код события onkeyup в отдельную фнкцию.
<input onkeyup="setCapitalLetter(this.value, this)" type="text"> Я с js на вы, но любому новичку, думаю, это по силам. |
Цитата:
Объявить обработчик вне атрибута? |
Цитата:
<input type="text" />
<script type='text/javascript'>
document.querySelector('input').addEventListener('keyup',function(){
setCapitalLetter(this.value, this)
});
function setCapitalLetter(Val,Obj){
alert(Val);
};
</script>
|
наверное, так...
<input type="text" />
<script type='text/javascript'>
document.querySelector('input').addEventListener('keyup',function(){
setCapitalLetter(this.value, this)
});
function setCapitalLetter(Val,Obj){
Obj.value = Val.toUpperCase() ;
};
</script>
|
ksa, не то, выскакивает окошко.
Dilettante_Pro, почти так. Только теперь все буквы становятся заглавными. А нужно только первую сделать заглавной. Забыл указать обязательное условие. На сервер значение поля input должно отправляться именно с заглавной буквой. С помощью события onkeyup это работает. Но мне нужно вынести весь js код в отдельный файл. |
pozitiv4ek,
Цитата:
<input type="text" />
<script type='text/javascript'>
document.querySelector('input').addEventListener('keyup',function(){
setCapitalLetter(this.value, this)
});
function setCapitalLetter(Val,Obj){
Obj.value = Val[0].toUpperCase() + Val.substr(1).toLowerCase() ;
};
</script>
Цитата:
Если будете подключать внешний скрипт в разделе head страницы, то js-код в файле нужно обернуть в
function ready() {
// здесь ваш код
}
document.addEventListener("DOMContentLoaded", ready);
|
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<input type="text">
<script>
document.querySelector('input').onkeyup=function(){
this.value=this.value.replace(/^(.)/, el => el.toUpperCase());
};
</script>
</body>
</html>
|
если для всех интутов
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<input type="text">
<input type="text">
<script>
[].forEach.call(document.querySelectorAll('input'), el=>el.onkeyup=function(){
this.value=this.value.replace(/^(.)/gm, el => el.toUpperCase());
});
</script>
</body>
</html>
|
Dilettante_Pro, j0hnik, спасибо! Оба варианта рабочие.
Вынес код в отдельный файл. |
Цитата:
|
| Часовой пояс GMT +3, время: 18:43. |