extjs 使用onKeyUp和RegEx在文本字段中使用“标题大小写”

cu6pst1q  于 2022-11-04  发布在  其他
关注(0)|答案(2)|浏览(155)

我正在构建一个Web应用程序,我希望我的文本字段是标题大写的。我做了研究,发现你可以在文本字段的onKeyUp控制器上执行以下代码:

onTextfieldKeyup1: function(textfield, e, eOpts) {

    var str = textfield.getValue();

    var newIn =  str.replace(/\w\S*/g, function(txt){
        return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
    });

    textfield.setValue(newIn);
}

这样就可以了,第一个字母会正确地大写。
但是,我还希望在选择/按Tab键进入字段时能够选择/突出显示所有内容。我知道可以通过执行以下操作来实现这一点:selectOnFocus: true .
RegEx解决方案的问题是它会过滤 * 每一次击键 *,所以当我用Tab键进入文本视图时,它不会选择所有内容,而是运行RegEx,我的文本插入点在末尾。此外,它不允许输入LeBronMacArthur,因为它只将第一个字母大写,其他所有内容均为小写。
我使用的是ExtJS 4。

exdqitrt

exdqitrt1#

如果键不是Tab键,则可以签入事件

if (e.keyCode != 9) {
        var str = textfield.getValue();

        var newIn =  str.replace(/\w\S*/g, function(txt){
            return txt.charAt(0).toUpperCase() + txt.substr(1);
        });

        textfield.setValue(newIn);
    }
lyr7nygr

lyr7nygr2#

您应该侦听一个不同事件,如changeblur
您也可以使用Ext.String.capitalize来代替regexp。
(http)的名称。

相关问题