2012-02-14 28 views
6

Tôi cần thêm hai số đầu vào của người dùng. Để làm điều đó, tôi tạo hai trường đầu vào, lấy các giá trị từ chúng, sử dụng .val(), trong hai biến riêng biệt và sau đó thêm chúng. Vấn đề là các chuỗi được thêm vào chứ không phải các số. Ví dụ: 2 + 3 trở thành 23 và không 5. hãy đề nghị làm gì, ngoại trừ sử dụng type = number trong hộp nhập liệu.Giá trị số của đầu vào số của người dùng trong trường văn bản

+0

thể trùng lặp của [Javascript để chuyển đổi chuỗi số?] (http://stackoverflow.com/questions/2130454/javascript-to-convert-st ring-to-number) –

Trả lời

6

Bạn có thể sử dụng parseInt (...)

Ví dụ:

var num = parseInt("2", 10) + parseInt("3", 10); 
// num == 5 
+0

Điều gì xảy ra nếu người dùng nhập '2.5'? Thậm chí nếu bạn cho rằng chỉ có các số nguyên được phép, vui lòng không đề xuất 'parseInt()' mà không sử dụng tham số thứ hai để chỉ định cơ sở 10 với 'parseInt (" 2 ", 10)', vì nếu không, nếu người dùng nhập số 0 đứng đầu (ví dụ: "077") có thể (tùy thuộc vào trình duyệt) được coi là bát phân; nếu người dùng nhập "0x" hàng đầu, nó sẽ được coi là thập lục phân. – nnnnnn

4

Sử dụng parseInt để chuyển đổi một chuỗi thành một số:

var a = '2'; 
var b = '3'; 
var sum = parseInt(a,10) + parseInt(b,10); 
console.log(sum); /* 5 */ 

Hãy ghi nhớ rằng parseInt(str, rad) sẽ chỉ làm việc nếu str thực sự chứa một số cơ sở rad, vì vậy nếu bạn muốn cho phép các căn cứ khác bạn sẽ cần kiểm tra chúng theo cách thủ công. Cũng lưu ý rằng bạn sẽ cần sử dụng parseFloat nếu bạn muốn nhiều hơn số nguyên.

+0

Nếu 'a' là' '2.5'' thì sao? Điều gì xảy ra nếu a là ''0x77'' hoặc'' 077'' và bạn chưa chỉ định cơ số? – nnnnnn

+0

@nnnnnn: Đã sửa lỗi, đó là một trong những câu trả lời sớm nhất của tôi và tôi đã không biết về các vấn đề 'parseInt' tại thời điểm đó. – Zeta

0

Hoặc sử dụng parseInt (http://www.w3schools.com/jsref/jsref_parseint.asp) hoặc parseFloat (http : //www.w3schools.com/jsref/jsref_parsefloat.asp) để chuyển đổi thành giá trị số trước khi thêm.

PS: Đây là câu trả lời đơn giản. Bạn có thể muốn làm một số xác nhận/stripping/cắt tỉa, vv

0

Số() là chức năng bạn muốn "123a" trả về NAN

parseInt() truncates trailing chữ "123a" trả 123

<input type="text" id="txtFld" onblur="if(!Number(this.value)){alert('not a number');}" /> 
Các vấn đề liên quan