将文本输入大写的JavaScript代码
我正在使用流行的Firefox扩展Greasemonkey 我想知道是否有一种方法可以将所有文本输入以某种形式大写,因此如果我使用jQuery,代码将类似于:将文本输入大写的JavaScript代码,javascript,jquery,greasemonkey,capitalization,capitalize,Javascript,Jquery,Greasemonkey,Capitalization,Capitalize,我正在使用流行的Firefox扩展Greasemonkey 我想知道是否有一种方法可以将所有文本输入以某种形式大写,因此如果我使用jQuery,代码将类似于: $('form#formid input[type=text]').capitalize(); 现在我当然知道.capitalize()不是一个有效的函数,为了使文本大写,您需要一个复杂的JavaScript代码,但在谷歌搜索之后,我找不到一个似乎可以在Greasemonkey中实现的代码 有人能帮我写这个剧本吗 大写,我的意思是将每个
$('form#formid input[type=text]').capitalize();
现在我当然知道.capitalize()
不是一个有效的函数,为了使文本大写,您需要一个复杂的JavaScript代码,但在谷歌搜索之后,我找不到一个似乎可以在Greasemonkey中实现的代码
有人能帮我写这个剧本吗
大写,我的意思是将每个单词的第一个字母大写,就像CSS文本转换:大写代码>并且它必须覆盖用户可能输入的字母,也许在表单提交时这样做会更容易…
谢谢。这就是你想要做的吗
(function ($) {
$.fn.capitalize = function () {
return this.val(function (i, oldValue) {
return oldValue.charAt(0).toUpperCase() + oldValue.slice(1);
});
};
})(jQuery);
如果要“实时”执行此操作,可以在事件内部处理该操作:
(function ($) {
$.fn.capitalize = function () {
this.on('keyup.capitalize change.capitalize', function () {
$(this).val(function (i, oldValue) {
return oldValue.charAt(0).toUpperCase() + oldValue.slice(1);
});
});
};
})(jQuery);
您将需要有问题的DOM对象的事件处理程序——特别是
keypress
事件处理程序。您需要在每次按键后读取输入字段的文本,以确保所有单词(由空格包围的文本)的第一个字符都大写
例如:
$('form#formid input[type=text]').keypress(function(event) {
// Function body goes here
});
作为一般策略,我建议按空格分割输入字段的值(使用
str.split(“”;
)。然后,遍历每个结果字符串。对于每个字符串,切掉第一个字母后的所有内容,并在切掉的字符串中附加一个大写的第一个字符。你可以看到其他答案向你展示了如何做到这一点。将所有这些字符串合并为一个字符串,并将输入值设置为大写字符串。我简单的大写函数实现将字符串按空格拆分,并将每个单词的第一个字母大写。它假定每个单词至少被一个空格分隔
function capitalize(text) {
var i, words, w, result = '';
words = text.split(' ');
for (i = 0; i < words.length; i += 1) {
w = words[i];
result += w.substr(0,1).toUpperCase() + w.substr(1);
if (i < words.length - 1) {
result += ' '; // Add the spaces back in after splitting
}
}
return result;
}
下面是一个演示:
更新
要使第一个字母大写,单词的其余部分小写,我们只需在将第一个字母大写后,在字符串的其余部分使用.toLowerCase()
:
...
for (var i = 0, len = split.length; i < len; i++) {
split[i] = split[i].charAt(0).toUpperCase() + split[i].slice(1).toLowerCase();
}
...
。。。
对于(变量i=0,len=split.length;i
下面是一个演示:内置事件绑定的版本 简单使用
$('input[type="text"]').capitalize()
(函数($){
$.fn.capitalize=函数(){
返回此值。每个(函数(){
var$字段=$(此字段);
$field.on('keyup change',function()){
$field.val(函数(i,旧){
如果(旧索引(“”)>-1){
变量词=旧的。拆分(“”);
对于(i=0;i
我在这里学习了一些技巧,并使用标准javascript制定了一些更简单的方法。我需要在iPad Web应用程序上大写输入框中的每个单词,autocapitalize无法始终如一地工作。以下是解决方法:
HTML输入
<input type="text" id="this_input" name="this_input" onkeyup="javascript:capitalize(this.id, this.value);">
Javascript
<script type="text/javascript">
function capitalize(textboxid, text) {
// string with alteast one character
var i, words, w, result = '';
words = text.split(' ');
for (i = 0; i < words.length; i += 1) {
w = words[i];
result += w.substr(0,1).toUpperCase() + w.substr(1);
if (i < words.length - 1) {
result += ' '; // Add the spaces back in after splitting
}
}
document.getElementById(textboxid).value = result;
}
</script>
函数大写(textboxid,text){
//至少包含一个字符的字符串
变量i,字,w,结果=“”;
单词=文本。拆分(“”);
对于(i=0;i
为什么不创建一个具有文本转换的css类:大写,并在必要时使用jQuery添加/删除该类?@c0deNinja因为,css不会更改实际内容,这些信息保存在数据库中…哇,这非常好用,任何方法都可以将其他字母小写,通常有些人在键入caps lock…@user1090389时,只需将.toLowerCase()
添加到split[i].slice(1)
字符串中即可。这里有一个演示:嘿,你知道关于Greasemonkey的任何事情吗,这个脚本似乎对我不起作用:@user1090389不,对不起。我对Greasemonkey没有任何经验。没关系,其他人可以帮助我嘿,我知道你做了什么,但是有没有办法让文本也实时大写,就像用户在键入而不是只获取预定义的输入值一样?更新为“实时”更新。
$('input[type="text"]').capitalize()
(function($) {
$.fn.capitalize = function() {
return this.each(function() {
var $field = $(this);
$field.on('keyup change', function() {
$field.val(function(i, old) {
if (old.indexOf(' ') > -1) {
var words = old.split(' ');
for (i = 0; i < words.length; i++) {
words[i] = caps(words[i]);
}
return words.join(' ');
} else {
return caps(old);
}
});
});
});
function caps(str) {
return str.charAt(0).toUpperCase() + str.slice(1);
}
};
})(jQuery);
<input type="text" id="this_input" name="this_input" onkeyup="javascript:capitalize(this.id, this.value);">
<script type="text/javascript">
function capitalize(textboxid, text) {
// string with alteast one character
var i, words, w, result = '';
words = text.split(' ');
for (i = 0; i < words.length; i += 1) {
w = words[i];
result += w.substr(0,1).toUpperCase() + w.substr(1);
if (i < words.length - 1) {
result += ' '; // Add the spaces back in after splitting
}
}
document.getElementById(textboxid).value = result;
}
</script>