对于从文本框中检索的字符串,Javascript string.split()失败

时间:2017-08-02 13:41:49

标签: javascript jquery

我正在尝试在换行符上拆分一个字符串,这似乎适用于我在javascript中声明的字符串,但它在我从html文本框中检索的字符串上失败。我们的想法是,在将某些内容粘贴到文本框中时,应触发此字符串拆分事件。

我不知道为什么这只是硬编码字符串。请看一下JSFiddle

HTML

<input type="text" name="test">

的Javascript

$(document).ready(function() {
$('input').bind('paste', null, function(e){
    $this = $(this);

    setTimeout(function(){
        var columns = $this.val().split(/\r?\n/);
        console.log(typeof $this.val());
        console.log(columns);
        var newstring = "a\nb\r\nc";
        console.log(newstring.split(/\r?\n/));
    },0);
});
});

的jsfiddle

https://jsfiddle.net/aoon86r1/

2 个答案:

答案 0 :(得分:3)

<input type="text">始终是单行的,因此您输入的任何文字都会删除任何换行符。换句话说,问题不在于您的脚本,而在于文本来源的格式。

如果您需要多行文字框,请改用<textarea></textarea>

答案 1 :(得分:1)

input字段是单行的,这意味着任何换行符都会被删除(或以其他方式处理)。您应该使用textarea元素。

&#13;
&#13;
$(document).ready(function() {
  $('textarea').bind('paste', null, function(e) {
    $this = $(this);

    setTimeout(function() {
      var columns = $this.val().split(/\r?\n/);
      console.log(typeof $this.val());
      console.log(columns);
      var newstring = "a\nb\r\nc";
      console.log(newstring.split(/\r?\n/));
    }, 0);
  });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea name="test"></textarea>
&#13;
&#13;
&#13;