Помогите вынести 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, время: 01:56. |