0

ユーザーがテキストエリアに入力できるようにしようとしていますが、特定の単語が表示された場合、その単語が削除されるまでカーソルを停止したいと思います。

単語を見つけましたが、カーソルを停止させる方法が見つかりません。

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;
                                }   
    }

                 });
            });
4

1 に答える 1

3

どのキーが押されているかを確認し、それがBackspaceまたはでない場合はブロックできDeleteます。簡単な例を次に示します。

$(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 デモ

すでにテキストチェックと通知の部分があるように見えるので、実際に欠けているのはキープレスブロックの部分だけです.

于 2012-08-10T20:13:02.187 に答える