Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将文本输入大写的JavaScript代码_Javascript_Jquery_Greasemonkey_Capitalization_Capitalize - Fatal编程技术网

将文本输入大写的JavaScript代码

将文本输入大写的JavaScript代码,javascript,jquery,greasemonkey,capitalization,capitalize,Javascript,Jquery,Greasemonkey,Capitalization,Capitalize,我正在使用流行的Firefox扩展Greasemonkey 我想知道是否有一种方法可以将所有文本输入以某种形式大写,因此如果我使用jQuery,代码将类似于: $('form#formid input[type=text]').capitalize(); 现在我当然知道.capitalize()不是一个有效的函数,为了使文本大写,您需要一个复杂的JavaScript代码,但在谷歌搜索之后,我找不到一个似乎可以在Greasemonkey中实现的代码 有人能帮我写这个剧本吗 大写,我的意思是将每个

我正在使用流行的Firefox扩展Greasemonkey

我想知道是否有一种方法可以将所有文本输入以某种形式大写,因此如果我使用jQuery,代码将类似于:

$('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>