如何用我们自己的标签替换html标签

时间:2018-04-18 14:45:48

标签: javascript jquery html html5 asp.net-mvc-5.1

在我的MVC Web应用程序中,我在View中有一个文本区域,因为用户会将HTML文本放在该文本中,我想用自己的自定义标记替换html标记。

例如:

HTML标记:

<input type='text' name='MyList.First_Name' data-val='true' data-val-required='Please enter first name' />

替换为:

[~TextFieldTag|MyList.First_Name|||0|data-val=>true|data-val-required=>Please enter first name|~]

任何人都可以建议这样做的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

我最初会建议一个简单的字符串替换,但考虑到替换的看似复杂的性质,这可能不是最好的方法。

可能最好的方法是获取HTML,将其转换为DOM元素,这可以通过将其放入元素innerHTML中来完成:

&#13;
&#13;
document.querySelector('button').addEventListener('click', () => {
  document.querySelector('#renderSpace').innerHTML = document.querySelector('textarea').value;
});
&#13;
Add some HTML:
<textarea></textarea>
<button>Press Me</button>
<div id="renderSpace"></div>
&#13;
&#13;
&#13;

您可以将您渲染的区域定位在屏幕外,以便用户实际看不到它。

从那里,我会走DOM树(基本上,从根开始,然后看看它的所有孩子,然后看看他们的孩子等,递归),读出你认为合适的任何属性然后写你的随你进行字符串替换。

这确实需要他们输入有效的HTML(这通常是一项要求,但很难依赖用户输入),因此您希望在一些好的,用户友好的错误处理那里。