我正在使用此功能:
function limitWords(id) {
var maxWords=3;
var d=document.getElementById(id);
if ( d.value.split(' ').length > maxWords ) {
t=d.value.substring(0,d.value.lastIndexOf(' '));
d.value=t.substring(0,t.lastIndexOf(' ')+1);
alert("You can choose up to 3 sectors");
}
}
我称之为:
<input type="text" name="et_newpost_tags" onkeyup="limitWords(this.id)"
我还想添加将每个单词格式化为标题大小写的函数。我发现了这个功能:
function toTitleCase(str)
{
return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
}
此处:Convert string to title case with JavaScript
所以我想知道是否可以将第二个函数合并到第一个函数中,因此函数会将每个单词的第一个字母大写(用逗号分隔),而不会影响计算输入中逗号数量的函数字段并发出警报。
答案 0 :(得分:1)
function limitWords(id) {
var maxWords = 3;
var d = document.getElementById(id);
if (d.value.split(' ').length > maxWords) {
t = d.value.substring(0, d.value.lastIndexOf(' '));
d.value = t.substring(0, t.lastIndexOf(' ') + 1);
alert("You can choose up to 3 sectors");
}
// Ensure title case
d.value = toTitleCase(d.value);
}
function toTitleCase(str) {
return str.replace(/\w\S*/g, function(txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
});
}
注意:我没有更改现有limitWords
功能的功能,假设它按照您的预期方式工作。
答案 1 :(得分:0)
function limitWords(id) {
var maxWords = 3;
var d = document.getElementById(id);
if (d.value.split(' ').length > maxWords) { // Swap ' ' for ',' if you want comma's
t = d.value.substring(0, d.value.lastIndexOf(' '));
d.value = t.substring(0, t.lastIndexOf(' ') + 1);
alert("You can choose up to 3 sectors");
}
// Ensure title case
d.value = toTitleCase(d.value);
}
function toTitleCase(str) {
return str.replace(/\w\S*/g, function(txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
});
}
詹姆斯丘陵基本上会回答,但在正确的地方打电话给“toTitleCase”。