2016-06-12 118 views
0

我有一個帶有target =「_ blank」和onsubmit =「return validateForm()」的表單,以及一個名爲「wordList」的textarea。這裏是我的validateForm()函數難以驗證textarea輸入

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

也能正常工作來測試一個空的輸入,但是我還需要驗證單詞表具有文本行的最小數量。我曾嘗試在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塊時,它在同一頁上,但無論哪種方式,每當我點擊提交按鈕,甚至用空textarea的,它會在另一個選項卡中打開當前頁面。

是否有更好的方法比使用PHP來計算和驗證文本區域的行數?

+0

我的回答有用,或者您需要更多的東西? –

回答

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

使用它在您提交的形式,如果條件檢查了countLines超過2 變種文字= $(「#單詞表」 ).VAL(); var lines = text.split(/ \ r | \ r \ n | \ n /); var count = lines.length; console.log(count); //輸出4

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

Codepen網址以供參考 - http://codepen.io/nagasai/pen/gMrpre

2

這是因爲PHP代碼執行在服務器端沒有客戶端,所以你需要寫javascript代碼的替代,而不是PHP代碼...

在這裏無論你在PHP代碼寫什麼也不會返回真的還是假的,你想獲得單詞表...所以它會從客戶端

1

你必須使用JavaScript實現此目的。你需要找出textarea有多少linebreaks。這裏有一個reference來一個類似的問題。

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

然後,你必須避免因按與JS的提交按鈕,如果換行的數量犯規符合您的標準動作。

Here a question for handling this.