0

非常に単純なwysiwygエディター (色なし) を作成しようとしており、開始タグの 1 つに「終了タグ」を作成しようとしました。

value を使用すると、の値全体が取得されるため機能しないことがわかっているtextareaので、 and を使用してみましstringた。indexOfreplace

しかし、コードがうまくいかないよう<html>ですtextarea<html> </html>

JavaScript

$(document).ready(function() {
    var textarea = document.getElementById('codeTextarea');
    textarea.keyup(function(e) {
        var str = textarea.value;
        if(str.indexOf('<html>') != -1){
            str.replace("<html>", "<html> </html>");
        }
    });
});

HTML

<textarea id="codeTextarea"></textarea>

textareaa 内の特定の文字列を別の文字列に置き換えるにはどうすればよいですか? (IE:<html>に置き換えられます<html> </html>)

知らせ

<doctype> <html>値を使用すると、必要なコードが機能しない可能性があるため、値を使用しないでください。

4

2 に答える 2

1

There are several mistakes in your code. The first one is that you are using jquery .keyup event which is missing in the normal DOM object. The second problem is that .replace actually returns the result of the replacement. And the third one is that you didn't apply the value to the text area.

var textarea = $('#codeTextarea');
textarea.keyup(function(e) {
    var field = $(this);
    var str = field.val();
    if(str.indexOf('<html>') != -1){
        str = str.replace("<html>", "<html> </html>");
    }
    field.val(str);
});

However, this code works, but you should rethink using regular expressions. Because once you convert the <html> to <html></html> next time you will get <html></html></html> and so on and so on.

Here is a jsfiddle http://jsfiddle.net/ErF4k/1/

And here is another jsfiddle http://jsfiddle.net/ErF4k/3/ which uses regex. That's not my strongest part, but the idea is to match <html> followed by something different then a tag.

var textarea = $('#codeTextarea');
textarea.keyup(function(e) {
    var field = $(this);
    var str = field.val();        
    if(str.indexOf('<html>') != -1){
        str = str.replace(/\<html\>([a-z|A-Z|0-9| ])/g, "<html></html>");
    }
    field.val(str);
});

Just start typing <html> and press a letter, number or interval.

于 2013-08-31T16:28:25.287 に答える
0

文字列のコンテンツを置き換えたら、テキストエリアの値を設定するのを忘れています。やってみてください:

$(document).ready(function() {
    var textarea = document.getElementById('codeTextarea');
    textarea.keyup(function(e) {
        var str = textarea.value;
        if(str.indexOf('<html>') != -1){
            textarea.value = str.replace("<html>", "<html> </html>");
        }
    });
});
于 2013-08-31T16:20:37.707 に答える