【问题标题】:What is the value of a blank line in a textarea?textarea中空行的值是多少?
【发布时间】:2015-11-25 02:03:46
【问题描述】:

我目前正在编写一个函数,该函数将检查文本区域中每一行的值并将结果输出到另一个文本区域中。

我现在的问题是我不知道文本区域中空行的值,我尝试过 ""、/\W/、undefined 和 null,但这些似乎都不起作用。这就是我现在拥有的:

function check(){
            var textAreaValue= $("textarea#minCheck").val();
            var valueArray= $("textarea#minCheck").val().split("\n");
            var parsedArray=[];

            for(i=0; i<valueArray.length;i++){
                if(valueArray[i]==/\W/){
                    parsedArray.push(valueArray[i] + "|blank");
                }else if(valueArray[i]>=0 && valueArray[i]<=999){
                    parsedArray.push(valueArray[i] + "|" + "brand1");
                }else if(valueArray[i]>=1000 && valueArray[i]<=1999){
                    parsedArray.push(valueArray[i] + "|" + "brand2");
                }else if(valueArray[i]>=2000 && valueArray[i]<=2999){
                    parsedArray.push(valueArray[i] + "|" + "brand3");
                }else if(valueArray[i]>=3000 && valueArray[i]<=3999){
                    parsedArray.push(valueArray[i] + "|" + "brand4");
                }else{
                    parsedArray.push(valueArray[i]+"|invalid");
                }
            }

            $("textarea#minParsed").val(parsedArray.join("\n"));
        }

现在,当检查空线时,它给了我“| brand1”。

【问题讨论】:

  • valueArray[i]==/\W/ 不会检查valueArray[i] 的内容是否与正则表达式/\W/ 匹配。它将比较两个对象,但是因为valueArray[i] 将是一个字符串,而/\W/RegExp 这永远不会是真的。您需要使用 RegExp 的 test() 函数。

标签: javascript jquery


【解决方案1】:

试试这个:修剪行的值并检查空格if(valueArray[i].trim()==""){,见下面的代码

     function check(){
        var textAreaValue= $("textarea#minCheck").val();
        var valueArray= $("textarea#minCheck").val().split("\n");
        var parsedArray=[];

        for(i=0; i<valueArray.length;i++){
            if(valueArray[i].trim()==""){
                parsedArray.push(valueArray[i] + "|blank");
            }else if(valueArray[i]>=0 && valueArray[i]<=999){
                parsedArray.push(valueArray[i] + "|" + "brand1");
            }else if(valueArray[i]>=1000 && valueArray[i]<=1999){
                parsedArray.push(valueArray[i] + "|" + "brand2");
            }else if(valueArray[i]>=2000 && valueArray[i]<=2999){
                parsedArray.push(valueArray[i] + "|" + "brand3");
            }else if(valueArray[i]>=3000 && valueArray[i]<=3999){
                parsedArray.push(valueArray[i] + "|" + "brand4");
            }else{
                parsedArray.push(valueArray[i]+"|invalid");
            }
        }

        $("textarea#minParsed").val(parsedArray.join("\n"));
    }

【讨论】:

    【解决方案2】:

    您可以使用此正则表达式检查空白行:/^\s*\n/gm,对于 Mac 行尾,请使用:/^\s*[\r\n]/gm

    【讨论】:

    • [\r\n] 没有错,只是解释。 OS X 和 Linux 的行尾是\n。在 Windows 上是\r。仅适用于 OS X 之前的 MacOS,它是 \r\n,但 [\r\n] 与这些不匹配,因为 [\r\n]\r\n
    【解决方案3】:

    您似乎正在尝试在没有 Regexp 调用的情况下使用正则表达式元字符 (\W)。

    字面值可能是\r\n (CR+LF),所以如果你在\n 上拆分,你就剩下\r

    尝试拆分\r\n,然后检查空字符串""

    HTML5 标准实际上改变了一些与此相关的东西,尽管我不知道它对实际浏览器实现有什么实际影响。我认为 HTML5 标准规定客户端 API 可以看到任何组合(CR、LF 或 CR+LF),因为允许用户编辑内容。

    这里有一个更好的答案来描述这些场景:

    https://stackoverflow.com/a/14217315/257090

    【讨论】:

      猜你喜欢
      • 2013-07-02
      • 1970-01-01
      • 2015-12-22
      • 2014-04-03
      • 2018-10-10
      • 2014-01-17
      • 2013-10-11
      • 2015-01-17
      • 1970-01-01
      相关资源
      最近更新 更多