2012-04-06 31 views
6

Trường văn bản thông thường, người dùng nhập chuỗi. Kiểm tra xem a) có gì đó trong đầu vào, b) không có khoảng trống nào trong đầu vào, và c) là số nguyên, không có ký tự nào khác. Sau đó, nút gửi. Bạn sẽ lưu ý rằng tôi không sử dụng hành vi html, không có onclick trong đầu vào, phân tách Nội dung/Trình bày/Hành vi nghiêm ngặt.javascript focus() không tập trung

HTML của tôi:

<form name="basicText" id="basicText" action=""> 
<p>Enter any ol' integer: 
<input type="text" id="inputBox" name="inputBox" size="14"/>  
<input value = "Next...?" type="submit" id="mySubmitBtn" name="mySubmitBtn"/> 
</p> 
</form> 
<script src="js/w1bscript.js" type="text/javascript"></script> 

cũng Lưu ý rằng ngoài javascript tập tin được thêm vào cuối của vì vậy tất cả các yếu tố có thể tải (không lo lắng về onload ngay bây giờ).

JavaScript:

var myButton1 = document.getElementById("mySubmitBtn"); 
var myForm1 = document.getElementById("basicText"); 
var myTextBox = myForm1.inputBox; 

function submitPress() { 
if(myTextBox.value.length == 0) { 
    alert("You didn't enter anything! Once more time, with feeling...") 
    basicText.focus(); 
    basicText.select(); 
} else if(/\s/.test(myTextBox.value)) { 
    alert("Eh... No spaces. Just integers. Try again..."); 
    basicText.focus(); 
    basicText.select(); 
    } else if (isNaN(myTextBox.value)==true) { 
    alert("Eh... Gonna need you to enter ONLY digits this time. kthnx."); 
    basicText.focus(); 
    basicText.select(); 
} else { 
    // The textbox isn't empty, and there's no spaces. Good. 
    alert("you've passed the test!") 
    } 
} 
myButton1.addEventListener('click', submitPress, false); 

Khi tôi nhập một đầu vào không chính xác, logic hoạt động, nhưng con trỏ không được tập trung trở lại vào hộp văn bản, không có vấn đề gì trình duyệt tôi sử dụng.

Fiddle: http://jsfiddle.net/2CNeG/

Cảm ơn bạn, Don

Trả lời

4

Có vẻ với tôi như bạn đang tập trung vào yếu tố hình thức của bạn; bạn cần tập trung vào các hộp văn bản thay thế:

document.getElementById('inputBox').focus(); 

hoặc myTextBox.focus() trong mã của bạn.

+0

@DonG Bạn cũng có vẻ đang gửi biểu mẫu bất kể qua xác thực hay không. – bfavaretto

+0

Yup; nó sẽ tốt hơn cho anh ta để sử dụng type = 'button' --OR-- để trả về false trong hàm xác nhận cho những đường dẫn trong đó xác thực thất bại. –

+0

Được rồi, tôi thấy quan điểm của bạn, tôi đã thay đổi nó thành myTextBox.focus(); và vẫn không tập trung vào hộp nhập/văn bản. – DonG

6

Bạn sẽ quan sát thấy rằng một khi bạn đã nhận xét hộp cảnh báo của bạn, bạn sẽ có thể nhìn thấy tập trung của bạn làm việc.Nhưng có một giải pháp cho cùng. Hãy thử cái này. Tôi nghĩ nó sẽ hoạt động.

setTimeout(function() { 
     document.getElementById('inputBox').focus(); 
    }, 0); 
+0

Vâng, tôi thấy rằng trọng tâm là có một giây, sau đó biến mất ... – DonG

Các vấn đề liên quan