特定の条件でテキスト領域を空にするためのヘルプが必要です

ザラ・クルナル

ページにテキスト領域コントロールがあり、ユーザーがテキスト領域をクリックするか、「ENTER」キーを押すと、テキスト領域に箇条書きが作成されるようにコーディングしました。ただし、問題は、ユーザーがテキスト領域をクリックすると箇条書きが作成されるが、ユーザーがテキスト領域に何も入力しない場合は空になり、箇条書きを削除する必要があることです。簡単に言うと、テキスト領域の箇条書きは、データが含まれていない場合は削除する必要があります。そしてもう1つは、ユーザーがテキスト領域から箇条書きを削除しないようにすることです。

これが私のコードです:

<textarea name="MondayAcomp" id="MondayAcomp" cols="45" rows="5"  onKeyDown="if(event.keyCode == 13) return false;" onKeyUp="bulletOnEnter(this.id)" onFocus="onfoc(this.id)" onBlur="onFocOff(this.id)" style="margin: 0px; width: 200px; height: 219px;"></textarea>

Javascript関数:

function onfoc(id) {
    if (document.getElementById(id).value == "") {
        document.getElementById(id).value += '• ';
    }
}

function onFocOff(id) {
    if (document.getElementById(id).value == '• ') {
        document.getElementById(id).empty;
    }
}

function bulletOnEnter(id) {
    var keycode = (event.keyCode ? event.keyCode : event.which);

    if (keycode == '13') {
        event.preventDefault();
        document.getElementById(id).value += '\n• ';
    }

    var txtval = document.getElementById(id).value;

    if (txtval.substr(txtval.length - 1) == '\n') {
        document.getElementById(id).value = txtval.substring(0, txtval.length - 1);
    }
}

ここにjsfiddle

Eisbehr
  1. そうではなく.empty、です.value = "";
  2. 以下のためにkeyCodeあなたは合格する必要がeventあまりにもあなたのコールバック関数にパラメータを。
  3. returnキーコールバックの最後の行もチェックすることで、空の行が追加されないようにすることができます
  4. 箇条書きが削除されないようにイメージ化できる唯一の方法は、最後にループを作成して、各行の開始を確認することです。

function onfoc(id) {
    if( document.getElementById(id).value == '' ) {
        document.getElementById(id).value +='• ';
    }
}

function onFocOff(id) {
    if( document.getElementById(id).value == '• ' ) {
        document.getElementById(id).value = '';
    }
}

function bulletOnEnter(event, id) {
    event = event || window.event;

    // handle 'return' key
    var keycode = event.keyCode || event.charCode || event.which;
    var txtval = document.getElementById(id).value;
    if( keycode == 13 && txtval.substr(txtval.length - 2) != '• ' ) {
        event.preventDefault();
        document.getElementById(id).value += '\n• ';
    }

    // remove possible last empty line
    txtval = document.getElementById(id).value;
    if( txtval.substr(txtval.length - 1) == '\n' ) {
        document.getElementById(id).value = txtval.substring(0, txtval.length - 1);
    }

    // check if each line starts with a bullet
    var lines = document.getElementById(id).value.split('\n')
    for( var i = 0, l = lines.length; i < l; i++ ) {
        if( lines[i].substr(0, 1) !== '•' ) {
            lines[i] = '•' + lines[i];
        }
    }
    document.getElementById(id).value = lines.join('\n');
}
<textarea id="MondayAcomp" onKeyDown="if(event.keyCode == 13) return false;" onKeyUp="bulletOnEnter(event, this.id)" onFocus="onfoc(this.id)" onBlur="onFocOff(this.id)"></textarea>

追加の回答として、質問にjQuery。でタグを付けたため、プレーンJSの代わりにjQueryを使用するようにコードを変換しました

$('#MondayAcomp').on({
    focus: function() {
        if( $(this).val() == '' ) {
            $(this).val($(this).val() + '• ');
        }
    },
    blur: function() {
        if( $(this).val() == '• ' ) {
            $(this).val('');
        }
    },
    keydown: function(e) {
        if( e.keyCode == 13 ) {
            e.preventDefault();
        }
    },
    keyup: function(e) {
        var element = $(this),
            value = element.val();

        // handle 'return' key
        if( e.keyCode == 13 && value.substr(-2) != '• ' ) {
            e.preventDefault();
            element.val((value += '\n• '));
        }

        // remove possible last empty line
        if( value.substr(-1) == '\n' ) {
            element.val((value = value.substring(0, value.length - 1)));
        }

        // check if each line starts with a bullet
        var lines = element.val().split('\n')
        for( var i = 0, l = lines.length; i < l; i++ ) {
            if( lines[i].substr(0, 1) !== '•' ) {
                lines[i] = '•' + lines[i];
            }
        }
        element.val(lines.join('\n'));
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="MondayAcomp"></textarea>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

PHPで値を表示するためのテキストボックス条件のヘルプが必要

分類Dev

テキストを空のスペースに置き換えるためにsedのヘルプが必要

分類Dev

リストの内容をテキストボックスに表示するためのヘルプが必要

分類Dev

入力のグループとテキスト領域に少なくとも1つの値が必要です

分類Dev

リストを条件付きでベクトル化するためのヘルプが必要

分類Dev

座標を使用して長方形の領域を見つけるために関数をテストしようとする助けが必要です

分類Dev

Bing MapsWPFコントロール領域の色をランダムに選択するためのヘルプが必要

分類Dev

ヘッダーとフッターの編集可能なテキスト領域は、両方の場所での変更を表示する必要があります

分類Dev

特定の条件に一致する列の値の差を計算するためのヘルプが必要

分類Dev

テキスト領域が空または200文字未満のルールを検証する

分類Dev

別の方法で配列の特定の値にアクセスするためのヘルプが必要

分類Dev

SSISの変数にテーブルのスキーマを格納するためのヘルプが必要

分類Dev

JasmineJSがテストする必要があるアプリの特定の領域

分類Dev

画面にテキストを動的に表示するには、別のヘルプが必要です

分類Dev

自分のデータベースで将来使用するために、クエリからテーブルを取得するためのヘルプが必要です

分類Dev

JavaScript関数を再度実行した後、テキスト領域をクリアするのに助けが必要

分類Dev

OCRでテキスト行を識別するためのMSERの領域のマージ

分類Dev

値が欠落しているため、まだルールを保存できません。設定するには、ルールの説明領域で下線が引かれたテキストをクリックします

分類Dev

特定の条件で複数選択するためのmysqlクエリを作成するためのヘルプが必要

分類Dev

NiFiでjsonファイルのavroスキーマを推測するためのヘルプが必要

分類Dev

perl:2つの単語内のテキストを特定の条件に置き換えるために必要な正規表現ヘルプ

分類Dev

WinFormPropertyGridヘルプ領域のテキストを変更します

分類Dev

UNIXにLDAPをインストールするためのヘルプが必要

分類Dev

テキスト領域の下部まで自動的にスクロールする

分類Dev

Java:テキスト領域の特定の行または文字列の行の色を変更するにはどうすればよいですか?

分類Dev

テキスト領域のプラクホルダーで改行する方法

分類Dev

テキスト領域のテキストが行の終わりに達したときに、テキスト領域を入力のように動作させるにはどうすればよいですか?

分類Dev

VBAまたは数式を使用した550番目の文字の後に、テキスト文字列でキャリッジリターンを分割または追加するためのヘルプが必要

分類Dev

CKEditorでテキスト領域の値を投稿する

Related 関連記事

  1. 1

    PHPで値を表示するためのテキストボックス条件のヘルプが必要

  2. 2

    テキストを空のスペースに置き換えるためにsedのヘルプが必要

  3. 3

    リストの内容をテキストボックスに表示するためのヘルプが必要

  4. 4

    入力のグループとテキスト領域に少なくとも1つの値が必要です

  5. 5

    リストを条件付きでベクトル化するためのヘルプが必要

  6. 6

    座標を使用して長方形の領域を見つけるために関数をテストしようとする助けが必要です

  7. 7

    Bing MapsWPFコントロール領域の色をランダムに選択するためのヘルプが必要

  8. 8

    ヘッダーとフッターの編集可能なテキスト領域は、両方の場所での変更を表示する必要があります

  9. 9

    特定の条件に一致する列の値の差を計算するためのヘルプが必要

  10. 10

    テキスト領域が空または200文字未満のルールを検証する

  11. 11

    別の方法で配列の特定の値にアクセスするためのヘルプが必要

  12. 12

    SSISの変数にテーブルのスキーマを格納するためのヘルプが必要

  13. 13

    JasmineJSがテストする必要があるアプリの特定の領域

  14. 14

    画面にテキストを動的に表示するには、別のヘルプが必要です

  15. 15

    自分のデータベースで将来使用するために、クエリからテーブルを取得するためのヘルプが必要です

  16. 16

    JavaScript関数を再度実行した後、テキスト領域をクリアするのに助けが必要

  17. 17

    OCRでテキスト行を識別するためのMSERの領域のマージ

  18. 18

    値が欠落しているため、まだルールを保存できません。設定するには、ルールの説明領域で下線が引かれたテキストをクリックします

  19. 19

    特定の条件で複数選択するためのmysqlクエリを作成するためのヘルプが必要

  20. 20

    NiFiでjsonファイルのavroスキーマを推測するためのヘルプが必要

  21. 21

    perl:2つの単語内のテキストを特定の条件に置き換えるために必要な正規表現ヘルプ

  22. 22

    WinFormPropertyGridヘルプ領域のテキストを変更します

  23. 23

    UNIXにLDAPをインストールするためのヘルプが必要

  24. 24

    テキスト領域の下部まで自動的にスクロールする

  25. 25

    Java:テキスト領域の特定の行または文字列の行の色を変更するにはどうすればよいですか?

  26. 26

    テキスト領域のプラクホルダーで改行する方法

  27. 27

    テキスト領域のテキストが行の終わりに達したときに、テキスト領域を入力のように動作させるにはどうすればよいですか?

  28. 28

    VBAまたは数式を使用した550番目の文字の後に、テキスト文字列でキャリッジリターンを分割または追加するためのヘルプが必要

  29. 29

    CKEditorでテキスト領域の値を投稿する

ホットタグ

アーカイブ