0

我正在使用这个功能:

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();});
}

此处:使用 JavaScript 将字符串转换为标题大小写

所以我想知道是否可以将第二个函数合并到第一个函数中,因此该函数会将每个单词的首字母大写(用逗号分隔),而不会影响计算输入字段中逗号数量并放入的函数一个警报。

4

2 回答 2

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功能的功能,假设它按您预期的方式工作。

于 2012-08-09T12:12:26.573 回答
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”调用。

于 2012-08-09T13:04:03.970 回答