2012-11-30 41 views
3

JS Fiddle Example選擇文本字符串,將其設置爲大寫

行 - 我有一個字段是全名(姓氏,名字)。返回的數據不是最後一個名字,它是全名。然後打印最後一頁。我想選擇剛剛過去的名字(逗號之前的所有內容),並將其設置爲大寫。

我可以在我的例子進行混合的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" />'); 
}​ 

基本上,我設置的字段變量 - 從來就測試了它準確地抓住我希望它搶的元素。我將字符串轉換爲數組,並用逗號分隔。然後將數組的兩個部分設置爲它們自己的變量。最後,將其包姓氏字符串中增加了「isUppercase」級的跨度。我知道我做錯了什麼,它是什麼?

+0

我認爲這是因爲你試圖拆分一個JQuery對象,你選擇了什麼對象? (被分割的位)......你需要以某種方式從這個對象獲得一個字符串值 – musefan

回答

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

Fiddle

.html() docs


上面是一個快速解決方案設置新innerHTML到的元素。如果你要使用正確的DOM操作,這將會是這樣的:我使用.each()所以上面的代碼會無論工作$('[data-dojo-attach-point|="physcianNameNode"]')匹配多個元件,或者只是一個單一的

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

Fiddle

注一。

+0

如果你立即調用它,不要以爲你需要將它變成函數,而是一個很好的解決方案。 +1 – bozdoz

+1

該函數在OP的代碼中,我只適用它。 '=]' –

3

問題是你正在試圖分裂一個jQuery對象。

我已更新了例如:See here

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) 
} 
1

與這條線出現該問題:

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

記號:

$('< some name >') 

是一個jQuery選擇器,其選擇一個元件。如果你輸入到這個控制檯在瀏覽器中(與你的選擇替換<一些名稱>),你會看到它返回一個對象而不是字符串。所以你的代碼試圖分割一個對象。我不知道該字符串的位置(DIV,跨度,輸入框等),但你需要拉字符串做分割。如果你的字符串是文字的股利或跨度使用:

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並進行相應的分割操作。

希望這會有所幫助。

相關問題