Изменить ввод в верхний регистр
JS:
<script type="text/css">
$(function() {
$('#upper').keyup(function() {
this.value = this.value.toUpperCase();
});
});
</script>
HTML
<div id="search">
<input type="radio" name="table" class="table" value="professor" tabindex="1" /> Professor
<input type="radio" name="table" class="table" value="department" tabindex="2" /> Department
<input type="radio" name="table" id="upper" class="table" value="course" tabindex="3" /> Course
<input type="text" name="search" class="keywords" value="Select an option..." onclick="this.value='';" onfocus="this.select()" onblur="this.value=!this.value?':this.value;" tabindex="4" />
<div id="content"> </div>
</div>
почему это все еще не работает?? Просто пытаюсь позвонить див".ключевые слова " от JS.
13 ответов:
Я думаю, что самый элегантный способ-без javascript, но с css. Вы можете использовать
text-transform: uppercase(это встроенный только для идеи):<input id="yourid" style="text-transform: uppercase" type="text" />Edit:
Итак, в вашем случае, если вы хотите, чтобы ключевые слова были прописными, измените:
keywords: $(".keywords").val(),до$(".keywords").val().toUpperCase(),
строковые объекты Javascript имеют
toLocaleUpperCase()функция, которая упрощает само преобразование.вот пример живой капитализации:
$(function() { $('input').keyup(function() { this.value = this.value.toLocaleUpperCase(); }); });
к сожалению, это полностью сбрасывает содержимое текстового поля, поэтому позиция курсора пользователя (если не "конец текстового поля") теряется.
вы можете взломать обратно в, однако, с некоторым переключением браузера магия:
// Thanks http://blog.vishalon.net/index.php/javascript-getting-and-setting-caret-position-in-textarea/ function getCaretPosition(ctrl) { var CaretPos = 0; // IE Support if (document.selection) { ctrl.focus(); var Sel = document.selection.createRange(); Sel.moveStart('character', -ctrl.value.length); CaretPos = Sel.text.length; } // Firefox support else if (ctrl.selectionStart || ctrl.selectionStart == '0') { CaretPos = ctrl.selectionStart; } return CaretPos; } function setCaretPosition(ctrl, pos) { if (ctrl.setSelectionRange) { ctrl.focus(); ctrl.setSelectionRange(pos,pos); } else if (ctrl.createTextRange) { var range = ctrl.createTextRange(); range.collapse(true); range.moveEnd('character', pos); range.moveStart('character', pos); range.select(); } } // The real work $(function() { $('input').keyup(function() { // Remember original caret position var caretPosition = getCaretPosition(this); // Uppercase-ize contents this.value = this.value.toLocaleUpperCase(); // Reset caret position // (we ignore selection length, as typing deselects anyway) setCaretPosition(this, caretPosition); }); });
в конечном счете, это может быть простой фейк. Установите стиль
text-transform: uppercaseна текстовое поле так, что его появляется верхний регистр для пользователя, а затем в вашем Javascript применить преобразование текста один раз, когда курсор пользователя полностью покидает текстовое поле:HTML:
<input type="text" name="keywords" class="uppercase" />CSS:
input.uppercase { text-transform: uppercase; }Javascript:
$(function() { $('input').focusout(function() { // Uppercase-ize contents this.value = this.value.toLocaleUpperCase(); }); });надеюсь, что это помогает.
также можно сделать это таким образом, но другие способы кажутся лучше, это пригодится, если вам это нужно только один раз.
onkeyup="this.value = this.value.toUpperCase();"
попробуй:
$('#search input.keywords').bind('change', function(){ //this.value.toUpperCase(); //EDIT: As Mike Samuel suggested, this will be more appropriate for the job this.value = this.value.toLocaleUpperCase(); } );
Если вы предназначаете его для html input, вы можете легко сделать это без использования javascript. Это будет стандартный и очень простой в использовании современный тег в CSS:
<input type="text" style="text-transform: uppercase" >или вы можете использовать класс начальной загрузки с именем "text-uppercase"
<input type="text" class="text-uppercase" >
решения с использованием значения.у toUpperCase, похоже, есть проблема, что ввод текста в поле сбрасывает позицию курсора до конца текста. Решения, использующие преобразование текста, похоже, имеют проблему, что текст, отправленный на сервер, все еще потенциально строчный. Это решение позволяет избежать этих проблем:
function handleInput(e) { var ss = e.target.selectionStart; var se = e.target.selectionEnd; e.target.value = e.target.value.toUpperCase(); e.target.selectionStart = ss; e.target.selectionEnd = se; }<input type="text" id="txtTest" oninput="handleInput(event)" />
Я не смог найти текст в верхнем регистре в Bootstrap, упомянутый в одном из ответов. Неважно, я его создал;
.text-uppercase { text-transform: uppercase; }это отображает текст в верхнем регистре, но базовые данные не преобразуются таким образом. Так что в jquery у меня есть;
$(".text-uppercase").keyup(function () { this.value = this.value.toLocaleUpperCase(); });это изменит базовые данные везде, где вы используете класс text-uppercase.
этот ответ имеет проблему:
style="text-transform: uppercase"Он также преобразует слово держателя места в верхний регистр, что неудобно
placeholder="first name"при отображении входных данных он записывает заполнитель "first name" в верхнем регистре
FIRST NAMEпоэтому я написал кое-что получше:
onkeypress="this.value = this.value + event.key.toUpperCase(); return false;"он работает хорошо!, но он имеет некоторые побочные эффекты, если ваш код javascript является сложным,
надеюсь, что это поможет кому-то дать ему / ей идею для развития лучше решение.
**JAVA SCRIPT** <html> <body> <script> function @ToCaps(obj) { obj.value=obj.value.toUpperCase(); } </script> <input type="text" onkeyup=@ToCaps(this)"/> </body> </html> **ASP.NET** Use a css style on the text box, write css like this:.ToCaps { text-transform: uppercase;}
<asp:TextBox ID="TextBox1" runat="server" CssClass="ToCaps"></asp:Te writxtBox> **OR** simply write this code in textbox <asp:TextBox ID="TextBox1" runat="server" style="text-transform:uppercase"></asp:TextBox> **1.Note you don't get intelligence until you type up to style="**
Javascript имеет
toUpperCase()метод. http://www.w3schools.com/jsref/jsref_toUpperCase.aspпоэтому везде, где вы думаете, что лучше всего поместить его в свой код, вам придется сделать что-то вроде
$(".keywords").val().toUpperCase()
вы можете попробовать это HTML
<input id="pan" onkeyup="inUpper()" />javaScript
function _( x ) { return document.getElementById( x ); } // convert text in upper case function inUpper() { _('pan').value = _('pan').value.toUpperCase(); }
<input id="name" upper type="text"/> <input id="middle" upper type="text"/> <input id="sur" upper type="text"/>верхний текст на динамически созданный элемент, который имеет атрибут верхний и когда происходит действие keyup
$(document.body).on('keyup', '[upper]', function toUpper() { this.value = this.value.toUpperCase(); });
Comments