【问题标题】:This code only working with alert?此代码仅适用于警报?
【发布时间】:2013-09-22 18:55:43
【问题描述】:

我有一个文本区域,当您按 Tab 时,它会插入三个空格。代码如下:

<!doctype html>
<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">                                </script>
        <style type="text/css">
            textarea {
                tab-size: 3;
            }
        </style>
    </head>
    <body>
        <textarea id="textarea"></textarea>
        <script>
            $(document).ready(function() {
                $("textarea").keydown(function(e) {
                    if (e.which === 9) {
                        e.preventDefault();
                        $(this).val += "\t";
                        alert("Tab pressed");
                    }
                });
            });
        </script>
    </body>
</html>

这段代码可以插入空格,但是当我取出警报时,它不起作用。

【问题讨论】:

  • 您的代码实际上并没有做任何事情。 val() 是一个函数。
  • @SLaks 它确实做了一些事情。它将'/t'添加到函数代码中,使其成为字符串。 Fiddle。只是搞砸了... ;)
  • @Derija93:是的,但是它会在一个立即被扔掉的物体上这样做,所以它仍然没有做任何事情。
  • @SLaks 你是对的。但我的评论并不意味着被认真对待。我希望“只是搞砸”足以说明这一点,但是......现在应该是了。

标签: javascript jquery textarea alert


【解决方案1】:

val() 是方法,不是属性,所以试试:

var $this = $(this);
$this.val($this.val() + "\t");

Fiddle

【讨论】:

  • @Ptr13 这并不能证明任何事情。见here。默认情况下,textarea 接受选项卡,这就是您认为您的方法正常运行的原因。
  • @Ptr13 当您发出警报时,它实际上是在使用 Tab 键按下,默认情况下不会在输入元素中处理以在选项卡中提供空格,它不会使用您的代码追加你打算做的\t。拆下来看看。
猜你喜欢
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-16
  • 1970-01-01
  • 2021-02-17
  • 2021-05-04
相关资源
最近更新 更多