在textarea中输入密钥

sat*_*sat 23 javascript textarea

我有一个textarea,Enter按下每个按键,textarea我希望用一个子弹说出新行(*).怎么去呢?

请不要jQuery.

Enter在那之后,我可以观察钥匙!我是否应该获得整个价值textarea并附加*并再次填写textarea

wil*_*oup 28

你可以这样做:

<body>

<textarea id="txtArea" onkeypress="onTestChange();"></textarea>

<script>
function onTestChange() {
    var key = window.event.keyCode;

    // If the user has pressed enter
    if (key === 13) {
        document.getElementById("txtArea").value = document.getElementById("txtArea").value + "\n*";
        return false;
    }
    else {
        return true;
    }
}
</script>

</body>
Run Code Online (Sandbox Code Playgroud)

虽然按Enter键的新行字符输入仍然存在,但它开始得到你想要的东西.

  • 这只适用于IE:其他浏览器不支持`window.event`. (6认同)

小智 15

只需将此tad添加到您的textarea.

onkeydown="if(event.keyCode == 13) return false;"
Run Code Online (Sandbox Code Playgroud)


Tim*_*own 8

您需要考虑用户在文本中间按Enter键的情况,而不仅仅是在结尾处.我建议按照建议检测keyup事件中的回车键,并使用正则表达式确保值符合您的要求:

<textarea id="t" rows="4" cols="80"></textarea>
<script type="text/javascript">
    function formatTextArea(textArea) {
        textArea.value = textArea.value.replace(/(^|\r\n|\n)([^*]|$)/g, "$1*$2");
    }

    window.onload = function() {
        var textArea = document.getElementById("t");
        textArea.onkeyup = function(evt) {
            evt = evt || window.event;

            if (evt.keyCode == 13) {
                formatTextArea(this);
            }
        };
    };
</script>
Run Code Online (Sandbox Code Playgroud)