2012-01-06 62 views
6

Tôi có một hộp văn bản html đơn giản. Khi tôi "gửi" biểu mẫu có hộp văn bản, tôi muốn có một biến với số lượng từ bên trong bằng cách sử dụng Jquery. Tôi cũng muốn kiểm tra xem văn bản đầu vào có phải chỉ là chữ cái, số và dấu gạch ngang (cũng có trong jquery) hay không. Tôi không cần phải đếm các từ khi người dùng nhập, chỉ khi biểu mẫu được gửi. Các hình thức sẽ không gửi nếu jquery được tắt vì vậy tôi đoán không có rủi ro bảo mật bằng cách không sử dụng php. Điều này có đúng không?Cách đếm các từ trong JavaScript bằng cách sử dụng JQuery

HTML:

<input type='text' name='name' id='name' /> 
<input type='button' value='Sign Up' id='signUp'> 

jQuery (nỗ lực):

var wordcount = $('#name').val() // i don't know how to count the words 
+0

này sẽ được đặt tên tốt hơn Đã cập nhật – Nick

+0

@nick. Cảm ơn – kirby

+0

_ "Biểu mẫu sẽ không gửi nếu jquery bị tắt vì vậy tôi đoán không có rủi ro bảo mật nào khi không sử dụng php. Điều này có đúng không?" _ - phụ thuộc vào ý nghĩa của "rủi ro bảo mật": bạn _must_ xác thực máy chủ đầu vào bên cạnh vì người dùng độc hại có thể sử dụng các công cụ dev để bỏ qua xác thực phía máy khách của bạn. Việc xác nhận tương tự trên máy khách là một tùy chọn bổ sung để cải thiện trải nghiệm người dùng. Nhân tiện, điều này không thực sự là một điều jQuery như là một "đồng bằng" regex JavaScript và '.split()' điều. – nnnnnn

Trả lời

14

Bạn sẽ chia chuỗi và sau đó đếm chiều dài của mảng kết quả.

$('input[type="submit"]').click(function() { 
    var words = $('#name').val().split(' '); 
    alert(words.length); 
}); 
+0

cảm ơn.Có cách nào để kiểm tra xem các ký tự này chỉ là chữ số và dấu gạch nối trong jquery không? – kirby

+0

có, bạn sẽ muốn sử dụng một regex cho điều đó. Bạn có thể chạy thử nghiệm và kết quả sẽ là true/false nếu nó khớp với tiêu chí lựa chọn của bạn. Regexes không phải là bộ đồ mạnh mẽ của tôi vì vậy bạn có thể muốn hỏi trong một câu hỏi mới. Tôi sẽ bị đâm vào nó. – mrtsherman

+0

Điều này sẽ không hoạt động tốt như mọi không gian bạn đặt giữa các từ sẽ được tính là một từ khác để "giúp tôi" sẽ là 6 từ !! – KXL

1
var str = $('#name').val(), 
    count = str.split(' ').length; 

Giả sử rằng mỗi từ được tách ra bởi một không gian

+0

im khá chắc chắn rằng chỉ cung cấp số ký tự. Tôi đang cố gắng tìm số từ – kirby

+0

Tôi đã đọc sai khi gặp tai nạn. 'split' sẽ tách chuỗi thành một mảng không gian – Trevor

+0

val(). length trả về một số, có một lỗi vượt quá. – dlopezgonzalez

1

Bạn có thể chỉ định nhiều nhân vật để chia chuỗi nguồn của bạn:

$('input[type="submit"]').click(function() { 
    var words = $('#name').val().split(/[\s\.,;]+/); 
    console.log(words.length); 
}); 
2

là rất hữu ích để loại bỏ khoảng trắng từ đầu và cuối của chuỗi usign $.trim(). Bạn có thể sử dụng sự kiện keyup để đếm thời gian thực.

$('#name').keyup(function(){ 
    var words = $.trim($(this).val()).split(' '); 
    console.log(words.length); 
}); 
6

Một cải tiến nhỏ về các câu trả lời khác như được đề cập đến nhiều trường hợp cạnh hơn. tức là sử dụng nhiều dấu cách và dấu chấm câu cùng nhau và cũng xử lý dấu chấm câu ở đầu và cuối văn bản chính xác.

Trước tiên, nó bỏ dấu chấm câu và dấu cách ở đầu và cuối văn bản, sau đó đếm số còn lại. Rõ ràng người ta có thể thêm dấu chấm câu (như dấu chấm than) nếu cần.

0

Sử dụng cụm từ thông dụng bên dưới cho phép chúng tôi xóa bất kỳ loại khoảng trắng nào (đơn hoặc bội số) sao cho số lượng rất chính xác.

$('#name').keyup(function(){ 
    var wordCount = $(this).val().split(/[\s\.\?]+/).length; 
    console.log(wordCount); 
}); 

Xem plugin này jQuery tôi đã phát triển: "Làm thế nào để đếm số từ trong JavaScript sử dụng JQuery"

https://github.com/mcdesignpro/maxLenght

+0

Tôi đã cập nhật câu trả lời cho bạn @Toby Speight :) Hy vọng nó sẽ giúp bạn! – Marco

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