合并两个JavaScript函数

时间:2012-08-09 09:47:31

标签: javascript

我正在使用此功能:

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

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

2 个答案:

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

这是a working fiddle

注意:我没有更改现有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”。