3

JS フィドルの例

OK -- フルネーム (姓、名) のフィールドがあります。返されるデータは姓名ではなく、フルネームです。次に、最後に最初に印刷されます。姓のみ (カンマより前のすべて) を選択し、大文字に設定したいと考えています。

私の例ではjQueryとjavascriptを混ぜているかもしれませんが、私は肯定的ではありません - まだ初心者です。ただし、この例で行ったことは次のとおりです。

function splitLastName(){
var splitNameArray = $('[data-dojo-attach-point|="physcianNameNode"]').split(",");
var lastName = splitNameArray[0];
var firstName = splitNameArray[1];
lastName.wrap('<span class="isUppercase" />');
}​

基本的に、フィールドの変数を設定しています。取得したい要素を正確に取得することをテストしました。文字列を配列に変換し、コンマ フィールドで分割しています。次に、配列の 2 つの部分を独自の変数として設定します。最後に、「isUppercase」クラスを追加するスパンで lastName 文字列をラップしようとしています。私は何か間違ったことをしていることを知っています、それは何ですか?

4

3 に答える 3

5
function splitLastName(){
    $('[data-dojo-attach-point|="physcianNameNode"]').html(function(i, v) {
        var names = v.split(',');
        return '<span class="isUppercase">'  +names[0] + '</span>,' + names[1];
    });
}

フィドル

.html()ドキュメント


上記はinnerHTML、要素に新しいを設定する簡単な解決策です。適切な DOM 操作を使用する場合は、次のようになります。

function splitLastName() {
    $('[data-dojo-attach-point|="physcianNameNode"]').each(function() {
        var names = $(this).text().split(',');
        $(this).empty().append($('<span>', {
            'class': 'isUppercase',
            text: names[0]
        }), ',' + names[1]);
    });
}

フィドル

.each()上記のコードは、$('[data-dojo-attach-point|="physcianNameNode"]')複数の要素または単一の要素の一致に関係なく機能するように使用していることに注意してください。

于 2012-11-30T17:29:24.693 に答える
3

問題は、JQuery オブジェクトを分割しようとしていることです。

私はあなたの例を更新しました:こちらをご覧ください

function splitLastName(){
    var element = $('[data-dojo-attach-point|="physcianNameNode"]');//find the element
    var html = element.html();//get the contents of the DIV element

    var splitNameArray = html.split(",");//Split the value with comma
    var lastName = splitNameArray[0];//store the last name
    var firstName = splitNameArray[1];//store the first name

    var newHtml = '<span class="isUppercase">' + lastName + '</span>, ' + firstName;//create the new html using the parsed values
    element.html(newHtml);//assign the new html to the original DIV element (overwriting the old)
}
于 2012-11-30T17:31:56.423 に答える
1

問題は次の行で発生します。

var splitNameArray = $('[data-dojo-attach-point|="physcianNameNode"]').split(",");

表記:

$('< some name >')

要素を選択する jQuery セレクターです。これをブラウザのコンソールに入力すると (< some name > をセレクタに置き換えます)、文字列ではなくオブジェクトが返されることがわかります。したがって、コードはオブジェクトを分割しようとしています。文字列がどこにあるか (div、span、入力ボックスなど) はわかりませんが、分割するには文字列をプルする必要があります。文字列が div または span のテキストである場合:

var splitNameArray = ($('[data-dojo-attach-point|="physcianNameNode"]').text()).split(",");

これは、そのセレクターに含まれる文字列を取得し、それに対して分割を実行するためです。同様に、入力にある場合は、適切なハンドラーを使用して値を取得する必要があります。

var splitNameArray = ($('[data-dojo-attach-point|="physcianNameNode"]').val()).split(",");

これにより、入力から値が取得され、分割が実行されます。文字列が html にある場合は、代わりに次の表記法を使用して取得できます。

var splitNameArray = ($('[data-dojo-attach-point|="physcianNameNode"]').html()).split(",");

これにより、html がプルされ、それぞれの分割操作が実行されます。

お役に立てれば。

于 2012-11-30T17:32:32.710 に答える