限制用户使用jquery将HTML TAGS输入到textarea中

时间:2012-11-21 10:17:13

标签: javascript jquery

我有一个textarea字段,我希望用户无法输入HTML TAGS到textarea。

这可能吗?

示例

    <textarea rows="4" cols="30" id="textareadescription"></textarea>

此用户无法输入HTML标签

      <button> Submit </button>

7 个答案:

答案 0 :(得分:3)

你可以这样做

function Check(){

var reg =/<(.|\n)*?>/g; 

if (reg.test($('#YourTextAreaID').val()) == true) {

    var ErrorText ='do not allow HTMLTAGS';

    alert('ErrorText');

    }
}

更多信息

http://www.pagecolumn.com/tool/all_about_html_tags.htm

答案 1 :(得分:2)

我要这样做的方式如下。通过将替换重构为一个函数,可以提高效率。但我将其详细说明只是为了简单地解释该程序...

           var str =   $('#textareadescription').val();
           //Temporarily replace the HTML elements I can accept
            str = str.replace(/<\/b>/g, "@@/b@@");
            str = str.replace(/<br>/g, "@@br@@");
            str = str.replace(/<i>/g, "@@i@@");
            str = str.replace(/<\/i>/g, "@@/i@@");

            //render all other HTML elements harmless
            str = str.replace(/</g, "&lt;");
            str = str.replace(/>/g, "&gt;");

            //put back the HTML elements I can accept
            str = str.replace(/@@b@@/g,"<b>");
            str = str.replace(/@@\/b@@/g,"</b>");
            str = str.replace(/@@i@@/g,"<i>");
            str = str.replace(/@@\/i@@/g,"</i>");
            str = str.replace(/@@br@@/g,"<br>");


//At this point str should contain only the HTML elements that I can accept. 

答案 2 :(得分:1)

如果您的输入文字并非真正需要,则可以阻止用户输入<>个符号。

以下javascript代码执行此操作:

$(function(){
    $('#textareadescription').on("keydown", function(e){
        if (e.shiftKey && (e.which == 188 || e.which == 190)) {
            e.preventDefault();
        }
    });
});​

在此尝试工作演示:http://jsfiddle.net/AHrrP/1/

答案 3 :(得分:0)

以下是您可以选择的选项:

  1. 你可以禁用&lt;或者&gt;您的Textarea上的符号。 this会告诉您如何在特定按键上执行操作。
  2. 你让他们在textArea中写下html标签。提交后,您重新处理该字符串,然后将其发送到服务器。
  3. 下面的

    是重新处理textArea内容的脚本

    function reProcessText(){
    
            var text= $('myTextArea').html();
            var startTag=-1;
            var endTag=-1;
            for(var i=0;i<text.length;i++){
                if(text[i]=='<')
                 startTag=i;
            if(text[i]=='>')
                 endTag=i;
            if(startTag != -1 && endTag!=-1){
                 text = text.substring(0,startTag) + text.substring(startTag+1, endTag);
    
                startTag=endTag=-1;
              }
            }  
    }
    

    我写了一个超级简单的算法来寻找和替换html标签。当然,根据您的需要,您可能需要使用更复杂的一个。

答案 4 :(得分:0)

情景:

  1. 用户在textarea中输入“提交”。
  2. 稍后,您复制该值并将其显示在div中。
  3. 所以你想要做的是:

    1. 确保div没有显示按钮。它将显示用户键入的确切值。
    2. 你可以在这里使用jquery的html()和text()函数。

      例如: 如果使用它,结果div将生成一个按钮。

          <textarea rows="4" cols="30" onkeyup="$('#divDesc').html($('#textareadescription').val());" id="textareadescription"></textarea>
          <div id="divDesc"> Result </div>
      

      但是如果你使用它,结果div不会生成按钮,而是显示值:

          <textarea rows="4" cols="30" onkeyup="$('#divDesc').text($('#textareadescription').val());" id="textareadescription"></textarea>
          <div id="divDesc"> Result </div>
      

答案 5 :(得分:0)

我要去除HTML标记。 mysqli_real_escape_string(); addlashes();

答案 6 :(得分:-2)

<script>
    $(document).ready(function() {
        $('#description').summernote(
            {
                placeholder: 'Description',
                tabsize: 2,
                height: 100,
                toolbar: [
                    ['style', ['bold', 'italic', 'underline', 'clear']],
                    ['fontsize', ['fontsize']],
                    ['para', ['ul', 'ol', 'paragraph']],
                    ['height', ['height']]
                ],
                codemirror:{theme: 'monokai'},
                fontNames: ['Arial', 'Arial Black', 'Comic Sans MS', 'Courier New']
            }
        );
    });
</script>