【问题标题】:stop cursor until text is changed in textarea in javascript停止光标,直到在 javascript 的 textarea 中更改文本
【发布时间】:2012-08-10 19:56:48
【问题描述】:

试图让用户在文本区域中输入,但如果看到某个单词,我希望光标停止,直到该单词被删除。

我找到了这个词,但我找不到让光标停止的方法。

关于如何在 javascript 中执行此操作的任何想法

 $(function() {
            $('#ideacomment').bind('keyup', function(e){
                var characterLimit = 300;
                charactersUsed = $(this).val().length;

                if(charactersUsed > characterLimit){
                    charactersUsed = characterLimit;
                    $(this).val($(this).val().substr(0, characterLimit));
                    $(this).scrollTop($(this)[0].scrollHeight);
                }
                var charactersRemaining = characterLimit - charactersUsed;
                $('#remainingCharacters').html(charactersRemaining);

                 var words = $('#ideacomment').val().split(/\b[\s,\.-:;]*/);
                 var wordcount = words.length;
                 var nonewords = new Array("f**k", "you");
                 var nonewordcount = nonewords.length;
                //console.log(nonewordcount + ' is the count');

                for(var i = 0; i < wordcount; i++) {

                    for(var t = 0; t < nonewordcount; t++) {
                        if(words[i] == nonewords[t]) {
                            message('No swearing please! <br><br> This post will not succeed!<br><br> Please remove it before you continue!', '430');
                            }
                        }
            }
            });


      });

上面的代码计算字符的数量并检查每个单词。我是否愿意并且我尝试过但没有成功是让它好像空间用完了。但是我一直无法使用与限制器相同的代码来实现它?

这是新代码。但仍然无法正常工作:

        $(function() {
            $('#ideacomment').bind('keyup', function(e){
                var characterLimit = 300;
                charactersUsed = $(this).val().length;

                if(charactersUsed > characterLimit){
                    charactersUsed = characterLimit;
                    $(this).val($(this).val().substr(0, characterLimit));
                    $(this).scrollTop($(this)[0].scrollHeight);
                }
                var charactersRemaining = characterLimit - charactersUsed;
                $('#remainingCharacters').html(charactersRemaining);

                 var nonewords = new Array("hey", "you");
                 var nonewordcount = nonewords.length;
                 for(var t = 0; t < nonewordcount; t++) {
                     if ($(this).val().indexOf(nonewords[t]) != -1) {
                        message('No swearing please! <br><br> This post will not succeed!<br><br> Please remove it before you continue!', '430');
                         var keycode = e.charCode || e.keyCode;
                            console.log(keycode);
                            if (keycode !== 8 && keycode !== 46)
                                return false;
                                }   
    }

                 });
            });

【问题讨论】:

  • 如果您发布的代码显示您到目前为止所尝试的内容会有所帮助。
  • 请定义“光标停止”部分
  • 在删除单词之前,我不需要再输入文本
  • 如果单词是只读或禁用的,用户如何删除它?
  • 所以你是在告诉我你不想让人们谈论刺客或失误?你对这个问题采取了错误的方法。

标签: javascript jquery cursor textarea


【解决方案1】:

您可以检查哪个键被按下,如果它不是 BackspaceDelete,则阻止它。这是一个简化的例子:

$(function() {
    $('#textbox').keydown(function(e) {
        if ($(this).val().indexOf('test') != -1) {
            var keycode = e.charCode || e.keyCode;
            if (keycode !== 8 && keycode !== 46)
                return false;
        }
    });
});​

jsFiddle Demo

由于您似乎已经有了文本检查和通知部分,所以您真正缺少的只是按键阻止部分。

【讨论】:

  • 志豪不错,可以在文本框中使用,但我无法在文本区域中使用?
  • var words = $('#ideacomment').val().split(/\b[\s,\.-:;]*/); var wordcount = words.length; var nonewords = new Array("f**k", "you", "test"); var nonewordcount = nonewords.length; for(var i = 0; i &lt; wordcount; i++) { for(var t = 0; t &lt; nonewordcount; t++) { if(words[i] == nonewords[t]) { message('No swearing please! &lt;br&gt;&lt;br&gt; This post will not succeed!&lt;br&gt;&lt;br&gt; Please remove it before you continue!', '430'); if ($(this).val().indexOf('test') != -1) { var keycode = e.charCode || e.keyCode; if (keycode !== 8 &amp;&amp; keycode !== 46) { return false; } } } } }
  • 使用textarea 和您的代码(减去单词抓取部分)似乎对我有用。 Link
  • 它确实适用于示例,但如果我用你的代码替换我的代码,我会得到一个 ILLEGAL TOKEN。
  • @AndrewWalker 我没有您的页面或您的确切要求,因此我很难为您编写确切的代码。您可能必须调整我提供的代码才能为您工作。话虽如此,我需要更多详细信息来帮助您调试问题。如果您遇到任何错误,您应该能够通过浏览器的开发者工具看到它是什么以及它来自哪里。
猜你喜欢
  • 2013-12-17
  • 1970-01-01
  • 2015-07-16
  • 1970-01-01
  • 2013-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-24
相关资源
最近更新 更多