【发布时间】:2017-09-08 18:01:06
【问题描述】:
1) 我正在尝试应用第一个字母为大写,其他字母为小写。如果用户在输入中写入,它应该会自动转换。例子:
"isaac guilherme araújo" 到 "Isaac Guilherme Araújo"
“iSAAC guilherme aRAÚJO”到“Isaac Guilherme Araújo”
2) 在巴西有带有连接词的名字。 示例:“das”“da”“dos”“do”“de”“e”。
卡洛斯·爱德华多·胡里奥 dos 桑托斯
卡洛斯·爱德华多 dos 桑托斯 e 席尔瓦
卡洛斯·爱德华多 da 席尔瓦
3) 我在使用名称字段时遇到了这个问题。使用以下代码,我可以应用大写的第一个字母,但其他小写字母我不能。然后,根据问题2,如果我写:
输入的值:“douglas de Oliveira júnior”
应该是:“Douglas de Oliveira Júnior”
不应该:“douglas de Oliveira Júnior”。 //当前代码显示的值
function contains(str, search){
if(str.indexOf(search) >= 0){
return true;
} else {
return false;
}
}
$.fn.capitalize = function(str) {
$.each(this, function() {
var split = this.value.split(' ');
for (var i = 0, len = split.length; i < len; i++) {
var verify = (split[len - 1] == "D" || split[len - 1] == "d") && (str == "e" || str == "E") || (str == "o" || str == "O");
if (verify == false) {
if ( contains(split[i], 'de') == false && contains(split[i], 'do') == false) {
split[i] = split[i].charAt(0).toUpperCase() + split[i].slice(1);
}
}
}
this.value = split.join(' ');
});
return this;
};
$(".capitalize").keypress(function(e) {
var str = String.fromCharCode(e.which);
$(this).capitalize(str);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label>Nome: </label>
<input type="text" id="nome" name="nome" class="form-control input-sm capitalize">
我是 Stackoverflow 的新成员,我为错误道歉,我正在学习 javascript。谢谢!
【问题讨论】:
-
在他们输入时这样做会搞砸删除键,将光标放在不同的位置等。
-
必须在按键上吗?只有在改变时才会更容易改变价值。它也会更实用,因为现在,您无法将光标放在输入的中间并正确编辑。
-
我认为应该是:var str = String.fromCharCode(e.target.innerHtml); api.jquery.com/event.target
-
我之前没见过这个问题(你不能将光标放在输入的中间并正确编辑)。老实说,我不知道在这种情况下该怎么办。哈哈哈:(
标签: javascript jquery