难以验证textarea输入

时间:2016-06-12 07:42:04

标签: javascript php html

我有一个带有target =“_ blank”和onsubmit =“return validateForm()”的表单,以及一个名为“wordList”的textarea。这是我的validateForm()函数

    function validateForm() {
        var x = document.forms["form1"]["wordList"].value;
        if (x == null || x == "") {
            alert("Word list cannot be empty.");
            return false;
        }
    }

这可以很好地测试空输入,但是我还需要验证wordList是否具有最小数量的文本行。我尝试在if语句之后插入一个php块,但是通过调用'explode()',无论是否有输入,它都会打开一个新的选项卡。这就是我的意思:

    function validateForm() {
        var x = document.forms["form1"]["wordList"].value;
        if (x == null || x == "") {
            alert("Word list cannot be empty.");
            return false;
        }
        <?php
        $wordInput = explode("\n", str_replace("\r", "", $_POST['wordList']));
        ?>
    }

我不确定如何在同一页面上引用php块中的wordList,但无论如何,每当我点击提交按钮时,即使是空文本区域,它也会在另一个标签页面中打开当前页面。

有没有比使用php计算和验证文本区域中的行数更好的方法?

3 个答案:

答案 0 :(得分:2)

这是因为php代码在服务器端而不是客户端执行,所以你需要编写javascript替代代码而不是php代码......

这里无论你在php代码中写什么,它都不会返回true或false,你想得到wordList ...所以它会从客户端提交表单

答案 1 :(得分:1)

        var text = $("#wordList").val();   
        var lines = text.split(/\r|\r\n|\n/);
        var count = lines.length;
        console.log(count); // Outputs 4

如果条件检查countLines超过2,请使用它                      var text = $(“#wordList”)。val();
            var lines = text.split(/ \ r | \ r \ n | \ n /);             var count = lines.length;             的console.log(计数); //输出4

          var countLines = document.getElementById("wordList").rows;

Codepen网址供参考 - http://codepen.io/nagasai/pen/gMrpre

答案 2 :(得分:1)

您必须使用JavaScript才能实现此目的。你需要找出textarea有多少个换行符。这是一个类似问题的reference

enteredText = textareaVariableName.val(); numberOfLineBreaks = (enteredText.match(/\n/g)||[]).length;

如果换行符的数量与您的条件不符,则必须阻止因使用JS按下提交按钮而导致的操作。

这是question for handling this.