2012-06-22 34 views
14

tôi muốn xóa đầu vào được chỉ định nếu giá trị không phải là số. chức năng hoạt động cho một ID, nhưng tôi muốn nó hoạt động cho nhiều. tất nhiên tôi có thể viết chức năng nhiều lần nhưng tôi không muốn làm điều đó.jQuery, cùng chức năng cho nhiều id

mã sau chỉ có hiệu lực đối với đầu vào có id "d". tôi không biết làm thế nào để xác định id khác. có ai giúp được không?

<input id="d" /> 

<input id="d2" /> 

<input id="d3" /> 

<script type="text/javascript"> 

$('#d,d2,d3').keyup(function(){ 

if($('#d,d2,d3').val() != "") { 

    var value = $('#d,d2,d3').val().replace(/^\s\s*/, '').replace(/\s\s*$/, ''); 

    var intRegex = /^\d+$/; 

    if(intRegex.test(value)) {} 

    else { 


    $(this).val(''); 

    } 



} 

}); 

</script> 

Trả lời

27

Thay vì $('#d,d2,d3') sử dụng $('#d, #d2, #d3') và nếu sử dụng tuyên bố $(this).val()

9

Bạn có thể nhìn thấy sử dụng bắt đầu bằng bộ chọn thay vì đưa vào nhiều id như thế này:

$('[id^=d]') 

Trên chọn sẽ làm việc cho tất cả các yếu tố có id bắt đầu với d ví dụ d1, d2, d3 và vân vân.

Sau đây là cách mã của bạn nên được (sửa chữa các lỗi khác cũng):

$('[id^=d]').keyup(function(){ 
if(this.value != "") { 
    var value = this.value.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); 
    var intRegex = /^\d+$/; 
    if(intRegex.test(value)) {} 
    else { 
     this.value = ''; 
    } 
}  
}); 
+0

@loler: Ah ok mát – Sarfraz

+0

Đây là câu trả lời đúng cho câu hỏi ...! Awsome! –

4
$('input[id^=d]').keyup(function() { 
    var val = $.trim(this.value); // or $.trim($(this).val()) 
    if (val != "") { 
     var value = val.replace(/^\s\s*/, '').replace(/\s\s*$/, ''), 
      intRegex = /^\d+$/; 
      if (intRegex.test(value)) { 
       // do something 
      } else { 
       $(this).val(''); 
      } 
    } 
});​ 

[id^=d] là một sự khởi đầu với selector đó có nghĩa là, id bắt đầu với d.

Đọc về jQuery start selector

4

Bạn quên # cho d2 & d3. Và cũng là this.

$('#d,#d2,#d3').keyup(function(){ 

    if($(this).val() != "") { 

     var value = $(this).val().replace(/^\s\s*/, '').replace(/\s\s*$/, ''); 

     var intRegex = /^\d+$/; 

     if(intRegex.test(value)) {} 
     else { 
      $(this).val(''); 

     } 
    } 
}); 
4

Bạn có thể thêm lớp thuộc tính

<input id="d" class="A"/> 
    <input id="d2" class="A"/> 
    <input id="d3" class="A"/> 

sử dụng sau selector theo tên lớp

$('.A').keyup 
Các vấn đề liên quan