使用jquery和textarea基于属性更改标记名称

时间:2016-07-18 06:59:26

标签: jquery html

我在这里再次提问

这是我的textarea

中的文字
 <Abstract>
    <Heading>Abstract</Heading>
    <Para TextBreak="No">Some paragraph <Emphasis Type="Italic">q</Emphasis> </Para>

</Abstract>

可能的输出

<Abstract>
    <Heading>Abstract</Heading>
    <P>Some paragraph <i>q</i> </P>
</Abstract>

这是输出的原因

文本来自文本区域。

我需要根据其属性

更改标签名称

所有Para标签必须更改为P标签

和所有

Type="Italic" attribute must be change to <i> tag

我搜索了一个解决方案

但我找到的解决方案是修改html。而不是文本区域的内容。非常感谢 这是我找到的解决方案,但我不能使它适用于我的问题

$(function(){
    $('#switch').bind('click', function(){
        $('p').replaceWith($('<div/>').html($('p').html()));
    });
});

这是我需要的样本。谢谢

https://jsfiddle.net/bc6xequ7/

1 个答案:

答案 0 :(得分:1)

请尝试如下操作。这不会删除标记<para>type="Italic"中的属性。但它肯定会替换你想要的标签。

&#13;
&#13;
jQuery(document).ready(function(){
textval = $('textarea').val();
textnewval = textval.replace('Para TextBreak="No"', 'p').replace('/Para', '/p'); 
  
  if(textnewval.indexOf('Italic') >= 0) //If Italic
{
	EmphasisAttr = 'Italic';
  textnewval = textnewval.replace('Emphasis Type="'+EmphasisAttr+'"', 'i').replace('/Emphasis', '/i'); 
}
if(textnewval.indexOf('Bold') >= 0) //If Bold
{
	EmphasisAttr = 'Bold';
  textnewval = textnewval.replace('Emphasis Type="'+EmphasisAttr+'"', 'b').replace('/Emphasis', '/b'); 
}
if(textnewval.indexOf('Underline') >= 0) //If underline
{
	EmphasisAttr = 'Underline';
	textnewval = textnewval.replace('Emphasis Type="'+EmphasisAttr+'"', 'u').replace('/Emphasis', '/u'); 
}
 

  $('textarea').val(textnewval);
  alert($('textarea').val());
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea rows="20" >
  <Abstract>
    <Heading>Abstract</Heading>
    <Para TextBreak="No" >Some paragraph <Emphasis Type="Italic">q</Emphasis><Emphasis Type="Bold">Bold</Emphasis><Emphasis Type="Underline">Underline</Emphasis> </Para>

</Abstract>
</textarea>
&#13;
&#13;
&#13;

如果不是您的预期,请告诉我。