2014-09-25 61 views
0

我有一個textarea,它抓住了人物數量的關鍵字。我也有一個javascript代碼,如果textarea在字段中沒有輸入任何字符或至少20個字符,則返回false。這是我的腳本:Textarea沒有專注,但提交

的Javascript

 function CheckLength() { 
      var msg_area = document.getElementById("error2"); 
      msg_area.innerHTML = ""; 
      if (document.getElementById("staf_address").value.length < 20) { 
       document.getElementById("error1").className = "par control-group error"; 
       document.getElementById("staf_address").focus();​ 
       msg_area.innerHTML = "YOU DID NOT ENTER ENOUGH INFORMATION"; 
       return false; 
      } else document.getElementById("addstaf").submit(); 
     } 

HTML

<form class="stdform stdform2" method="post" id="addstaf" action="index.php?site=addstafrev" onsubmit="return CheckLength()" /> 
    <div id="error1"> 
    <label for="staf_address">Address</label> 
     <span class="field"> 
     <textarea cols="80" rows="5" name="staf_address" id="staf_address" class="span5 textarea2" maxlength="120" required /></textarea> 
     <span class="help-inline" id="error2"></span> 
     </span> 
    </div><!--par--> 
<button type="submit" class="btn btn-primary">Next</button> 
</form> 

有一點問題都沒有,一開始。如果id=staf_address中的字符少於20個字符,textarea將不會被提交。該錯誤將顯示在id=error2上。所以,textarea和表單工作正常,沒問題。問題在於,在提交表單時(如果textarea小於20個字符),它不會將焦點放在文本區域上。所以,我添加一行代碼就是這一行:

document.getElementById("staf_address").focus();​ 

之後,出現這個問題。該文件不會檢查我的JavaScript,而是提交表單事件,儘管textarea只有1個字符。如何解決這個問題?

只需要一個普通的javascript。

+0

檢查控制檯中發現的任何js錯誤,我可以在控制檯中看到一些錯誤。 pleasecheck – 2014-09-25 19:25:57

+0

@AbdullaChozhimadathil什麼控制檯?我沒有任何'控制檯'來檢查錯誤。就我所見,代碼很好。你能告訴我這個錯誤嗎? – user2781911 2014-09-25 19:29:33

+0

試試這個http://jsfiddle.net/k0LLjfxj/ – 2014-09-25 19:35:26

回答

1

當我把你的代碼粘貼到JS小提琴中後,我注意到焦點()後的一個奇怪的字符;

enter image description here

刪除似乎來解決這個問題。

preventDefault()是一種事件方法,因此只有在事件對象被傳入函數時才能使用它。例如:https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault

+0

哇,這是什麼?無論如何,這真的解決了我的問題!也許我有這個奇怪的角色,因爲我從其他代碼複製。 – user2781911 2014-09-25 19:49:50

0

當您按下按鈕時,您的表單被提交。您需要阻止preventDefault()這將停止提交,允許您在正確提交之前手動提交之前執行函數和whatnot。

請記住,表單標籤中的button默認爲提交按鈕!

+0

但是,以前沒有'preventDefault()',我的表單工作正常。它完全沒有提交,並顯示錯誤,我沒有足夠的字符。正當我添加焦點線時,腳本無法運行。 – user2781911 2014-09-25 19:27:04