javascript - 发送前从输入中删除 HTML 标签

标签 javascript php jquery html regex

我有一些聊天脚本,我正在尝试在单击发送或提交之前过滤输入字段。 这是我的输入字段:


<input required type="text" name="content"  maxlength="300" id="content" placeholder="Write Your Message.."  autocomplete="off">

提交

 <button type="submit" class="sound-btn" id="submit_button">
        <i class="fa fa-paper-plane"></i>
    </button>

当我尝试发送一些标签时

<img src="avatar/user1_13128662_tumb.jpg">
<div id="test">
demo text
</div>

不幸的是正在工作

我需要做什么.. 从输入中删除所有 attr 标签或防止在输入中写入 html 标签,因为所有这些数据都保存在数据库中,非常危险,并且也允许 xss 注入(inject) 像这样的东西

<b>
<div>
</div>
<img
<a
<li
<ul
and all the HTML tags just keep links and numbers and normal text

我认为所有 HTML 标签 我需要保留什么 http 和 https 以及 mailto: 以及普通文本和数字 只需在通过 javascript 或 jquery 发送之前过滤不需要的字符..谢谢

最佳答案

您可以将一个简单的正则表达式应用于输入的 onchange 事件:

document.getElementById('content').addEventListener('change', (e)=> {
    let tValue = e.target.value.replace(/<[^>]+>/gim, '');
    e.target.value = tValue;
});

关于javascript - 发送前从输入中删除 HTML 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58616947/

相关文章:

javascript - 将 MySQL 存储过程与 Javascript 对象结合使用

javascript - 在 ContentEditable Div 中创建链接

php - DB_DataObject 和 PDO

php - 从数据库中获取数据以在下拉列表中设置为默认值 HTML/CSS/MYSQL/PHP

php - 在 Laravel 4 中将变量从路由组传递到路由函数

php - 如何在模板页脚中加载脚本 - CodeIgniter

javascript - 如何根据元素的宽度改变背景颜色?

javascript - 当表中有多个记录时,在 JS 中获取隐藏值时出现问题(Coldfusion)

javascript - 循环遍历元素不起作用

Jquery $ ('.class' ).live ('click' ,...) - 未找到具有相同类名的多个 gridview 列