我需要在特定情况下清空文本区域的帮助

扎拉·克鲁纳(Zala Krunal)

我的页面中有文本区域控件,并且以这样的方式进行编码:当用户单击文本区域或按“ ENTER”键时,它将在文本区域中创建项目符号列表。但是问题在于,如果用户单击文本区域,它将创建项目符号列表,但是如果用户未在文本区域中键入任何内容,则该文本应该为空,并且应删除项目符号。如果其中没有数据,则应以简单的方式删除文本区域项目符号列表。还有一件事是防止用户从文本区域删除项目符号。

这是我的代码:

<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在这里

艾斯比尔
  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

特定情况下的时序图

来自分类Dev

在特定情况下替换字符

来自分类Dev

特定情况下的开关盒

来自分类Dev

特定情况下的分段错误

来自分类Dev

在不禁用文本区域的情况下禁用文本输入

来自分类Dev

MySQL:在我的情况下需要帮助查询

来自分类Dev

水豚:如何在没有'id'的情况下填充文本区域?

来自分类Dev

在没有 Bootsrap 的情况下显示内联文本区域和按钮

来自分类Dev

在我的特定情况下,如何在C#中选择正确的循环语句?

来自分类Dev

在 python 中, input() 函数在这种特定情况下对我不起作用

来自分类Dev

在特定情况下未调用Firebase onDataChange

来自分类Dev

在特定情况下显示和隐藏弹出窗口

来自分类Dev

在特定情况下未绘制视图

来自分类Dev

在特定情况下如何抑制声纳法则?

来自分类Dev

在特定情况下的功能依赖性

来自分类Dev

在特定情况下使用控件结构显示表单

来自分类Dev

在特定情况下显示和隐藏弹出窗口

来自分类Dev

NodeJS在特定情况下使用错误

来自分类Dev

在特定情况下如何使用高阶结构

来自分类Dev

选择器在特定情况下的独占CSS

来自分类Dev

在特定情况下未绘制视图

来自分类Dev

如何在特定情况下捕获OnTouchEvent?

来自分类Dev

在特定情况下如何抑制声纳法则?

来自分类Dev

在特定情况下,如何使JRadioButton透明?

来自分类Dev

在sql server中的特定情况下除以零

来自分类Dev

WordPress-如何在不丢失换行符的情况下清理文本区域中的多行文本?

来自分类Dev

WordPress-如何在不丢失换行符的情况下清理文本区域中的多行文本?

来自分类Dev

如何在不弄乱编辑历史的情况下使用JavaScript将文本插入文本区域?

来自分类Dev

如何在不复制的情况下将文本传输到网站文本区域?带有硒的 Python

Related 相关文章

  1. 1

    特定情况下的时序图

  2. 2

    在特定情况下替换字符

  3. 3

    特定情况下的开关盒

  4. 4

    特定情况下的分段错误

  5. 5

    在不禁用文本区域的情况下禁用文本输入

  6. 6

    MySQL:在我的情况下需要帮助查询

  7. 7

    水豚:如何在没有'id'的情况下填充文本区域?

  8. 8

    在没有 Bootsrap 的情况下显示内联文本区域和按钮

  9. 9

    在我的特定情况下,如何在C#中选择正确的循环语句?

  10. 10

    在 python 中, input() 函数在这种特定情况下对我不起作用

  11. 11

    在特定情况下未调用Firebase onDataChange

  12. 12

    在特定情况下显示和隐藏弹出窗口

  13. 13

    在特定情况下未绘制视图

  14. 14

    在特定情况下如何抑制声纳法则?

  15. 15

    在特定情况下的功能依赖性

  16. 16

    在特定情况下使用控件结构显示表单

  17. 17

    在特定情况下显示和隐藏弹出窗口

  18. 18

    NodeJS在特定情况下使用错误

  19. 19

    在特定情况下如何使用高阶结构

  20. 20

    选择器在特定情况下的独占CSS

  21. 21

    在特定情况下未绘制视图

  22. 22

    如何在特定情况下捕获OnTouchEvent?

  23. 23

    在特定情况下如何抑制声纳法则?

  24. 24

    在特定情况下,如何使JRadioButton透明?

  25. 25

    在sql server中的特定情况下除以零

  26. 26

    WordPress-如何在不丢失换行符的情况下清理文本区域中的多行文本?

  27. 27

    WordPress-如何在不丢失换行符的情况下清理文本区域中的多行文本?

  28. 28

    如何在不弄乱编辑历史的情况下使用JavaScript将文本插入文本区域?

  29. 29

    如何在不复制的情况下将文本传输到网站文本区域?带有硒的 Python

热门标签

归档