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 を使用して文字列をタイトル ケースに変換する

したがって、2番目の関数を最初の関数にマージできるかどうか疑問に思っていたので、入力フィールドのコンマの数を数えて入力する関数に影響を与えることなく、関数は各単語の最初の文字を大文字にします(カンマで区切られます)。アラート。

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

基本的にJameshillsが答えますが、適切な場所で「toTitleCase」を呼び出します。

于 2012-08-09T13:04:03.970 に答える