2012-04-18 34 views
5

Tôi đang cố gắng xem liệu độ dài trường văn bản có ít nhất một độ dài nhất định hay không. đây là mã của tôi:kiểm tra chiều dài giá trị trường văn bản

<form name="form2" id="form2" onsubmit="return validate()"> 
length 4: <input type="text" name = "t" id="t" /> 
<input type="button" name="submit" value="submit" /> 
</form> 

<script> 
function validate() { 
    document.write("good"); 
    submitFlag = true; 
    if(document.form2.t.value.length!=4){ 
     submitFlag=false; 
     alert("ivalid length - 4 characters needed!"); 
    } 
    return submitFlag; 
} 
</script> 

khi tôi nhấp gửi, không có gì xảy ra.

+1

Bạn đang sử dụng 'document.write()' trong ngữ cảnh sai một lần nữa ... – Teemu

Trả lời

0

Bạn có thể muốn lớn hơn hoặc bằng (> =), thay vì không bằng (! =) Nếu bạn muốn "ít nhất một độ dài nhất định"

4

Thay đổi của bạn nút gửi để type = "submit" . Biểu mẫu không bao giờ được gửi để chức năng xác thực không được gọi.

0

nút của bạn nên được

<input type="submit" name="submit" value="submit" /> 

nếu không thì sự kiện onsubmit sẽ không xảy ra. Ngoài ra, hãy sử dụng console.log() để gỡ lỗi, thay vì document.write().

0

Tôi đã đốm lỗi khác nhau:

  • không sử dụng document.write(), nó sẽ ghi đè lên các tài liệu đang mở
  • form2 là không có tài sản của document. Bạn có thể sử dụng document.forms.form2, nhưng document.getElementById("t") đơn giản hơn ở đây
  • Cụm từ của bạn không kiểm tra "ít nhất 4", nó sẽ kiểm tra "chính xác 4".
  • Nút của bạn sẽ không gửi bất cứ điều gì. Thay đổi nó để <button type="submit"> hoặc <input type="submit" />
  • bạn có thể chỉ định một pattern=".{4}" cho đầu vào hoặc cho nó một thuộc tính required
+0

1. Tôi nên sử dụng điều gì? chỉ cần viết tin nhắn cho một div? 2. form2 là tên/id cho biểu mẫu. tôi đoán cuốn sách hướng dẫn này mà tôi đang sử dụng phải được thực sự cũ .... 3. có lợi thế nào để sử dụng javascript cho min/chiều dài tối đa? – droidus

+0

Có, sau khi tài liệu được tải, bạn cần thao tác DOM; ví dụ thao tác nội tại của div. @ HTML5 xác nhận: Lợi thế là bạn sẽ không cần javascript (trong các trình duyệt hiện đại). BTW: min/max chỉ dành cho số – Bergi

0

Có một vài vấn đề mà bạn có. 1) Bạn cần phải làm cho đầu vào của bạn một nút gửi và 2) bạn cần phải loại bỏ tuyên bố document.write() của bạn. Thay đổi mã của bạn như sau (or see this jsFiddle):

<form name="form2" id="form2" onsubmit="return validate()"> 
length 4: <input type="text" name = "t" id="t" /> 
<input type="submit" name="submit" value="submit" /> 
</form> 

<script> 
function validate() { 
    submitFlag = true; 
    if(document.form2.t.value.length!=4){ 
     submitFlag=false; 
     alert("ivalid length - 4 characters needed!"); 
    } 
    return submitFlag; 
} 
</script>​​​​ 

Bạn đã khá chặt chẽ, nhưng bạn có thể sử dụng một số dọn dẹp trên mã mà (Lưu ý: Tôi đã không cung cấp bất kỳ).

1

loại đầu vào cần phải được "submit"

<form name="form2" id="form2" onsubmit="return validate()"> 
    length 4: <input type="text" name = "t" id="t" /> 
    <input type="submit" name="submit" value="submit" /> <!--INPUT TYPE MUST BE SUBMIT --> 
    </form> 

    <script> 
    function validate() { 
     document.write("good"); 
     submitFlag = true; 
     if(document.form2.t.value.length!=4){ 
      submitFlag=false; 
      alert("ivalid length - 4 characters needed!"); 
     } 
     return submitFlag; 
    } 
</script> 
0

Bạn cũng nên thêm một thuộc tính maxlength để nhập văn bản của bạn, nó sẽ giúp người sử dụng.

<form name="form2" id="form2" onsubmit="return validate();"> 
    <input type="text" name="t" id="t" maxlength="4"/> 
    <input type="submit" name="submit" value="submit"/> 
</form> 

<script type="text/javascript"> 
    function validate() 
    { 
     if (document.getElementById("t").value.length != 4) 
     { 
      alert("Invalid length, must be 4 characters"); 
      return false; 
     } 
     return true; 
    } 
</script> 
Các vấn đề liên quan