2012-11-30 27 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并进行相应的分割操作。

希望这会有所帮助。

相关问题