代码之家  ›  专栏  ›  技术社区  ›  Chizl

使用Javascript拒绝文本区域中的特定字符,

  •  0
  • Chizl  · 技术社区  · 6 年前

    所以我有一个文本区域,我想防止有人在输入时将xss数据放入其中。。在提交之前,我需要这样做,因为我的站点是ASP.NET,而且framework会立即抛出一个异常 “潜在的危险请求。从客户端检测到窗体值。”

    如果它被张贴,不允许我在张贴期间清理它。所以我需要在发布之前通过JavaScript来完成。

    我试着这样做,想,也许它会拒绝按键,但它似乎不起作用,返回false,并不像提交那样做。

    function CheckChar(event) {
        var x = event.which || event.keyCode;
        if (x == 60 || x == 62)
            return false;
        else
            return true;
    }
    

    然后从HTML中我要做的是:

    <asp:TextBox id="SMSMessage" TextMode="multiline" onkeypress="CheckChar(event)" Columns="50" Rows="5" runat="server" />
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Sagar    6 年前

    使用 return

    function CheckChar(event) {
        var x = event.which || event.keyCode;
        console.log(x)
        if (x == 60 || x == 62)
            return false;
        else
            return true;
    }
    <!DOCTYPE html>
    <html>
    <body>
    
    
    <textarea name="SMSMessage" rows="5" cols="50" id="SMSMessage" onkeypress="return CheckChar(event)"></textarea>
    
    
    
    </body>
    </html>
        2
  •  0
  •   Chizl    6 年前

    我最终使用了另一种方法,因为我需要验证所有数据,以防有人在文本区域粘贴文本。

    <asp:TextBox id="SMSMessage" TextMode="multiline" onkeyup="validate(this)" Columns="50" Rows="5" runat="server" />
    

    使用这个javascript:

    function validate(o) {
        if (o.value.indexOf('<') > -1)
            o.value = o.value.replace('<', '');
        if (o.value.indexOf('>') > -1)
            o.value = o.value.replace('>', '');
    }