2017-08-30 20 views
6

Tôi đã tìm kiếm trên internet nhưng các thông báo có vẻ giống với vấn đề của tôi hay không. Điều tôi muốn là thêm question numbers cho các câu hỏi trong trường text và các số phải là unique. Tôi đang cố gắng kiểm tra xem array of numbers có tồn tại trong một mảng số câu hỏi (e.g. 8 questions) hay không, sau đó nếu nó nằm trong mảng, bạn có thể nhập số miễn là not entered yet, nhưng mã của tôi không hoạt động. Làm thế nào tôi có thể làm điều đó? Vui lòng xem mã của tôi bên dưới để tham khảo.Cách kiểm tra xem các giá trị trong một mảng có tồn tại trong một mảng trong jquery/javascript

$(document).ready(function(){ 
 
\t var try1; 
 
    var arrayLen = $('#question\\[\\]').length; 
 
    var numArray = []; 
 
    var convertedArray; 
 
    for(i = 1; i <= arrayLen; i++){ 
 
    \t numArray.push(i); 
 
    } 
 
    
 
    $('#question\\[\\]').on('input', function(){ 
 
    if($.inArray($(this).val(), numArray) !== -1){ 
 
    \t $('#result').html("available"); 
 
    } else{ 
 
    \t $("#result").html("not available"); 
 
     return false; 
 
    } 
 
    }); 
 
    
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<input type="text" id="question[]" placeholder="multipleChoice"><br><br> 
 
<input type="text" id="question[]" placeholder="trueFalse"><br><br> 
 
<input type="text" id="question[]" placeholder="shortAnswer"><br><br> 
 
<input type="text" id="question[]" placeholder="shortAnswer"><br><br> 
 
<input type="text" id="question[]" placeholder="description"><br><br> 
 
<input type="text" id="question[]" placeholder="multipleChoice"><br><br> 
 
<input type="text" id="question[]" placeholder="multipleChoice"><br><br> 
 
<input type="text" id="question[]" placeholder="trueFalse"><br><br> 
 

 
<span id="result"></span>

trả lời chấp nhận:nhưng cần một UPDATE

Accepted answer by @Shiladitya

+4

ID phải là duy nhất. '$ ('# question \\ [\\]')' sẽ chỉ chọn phần tử đầu tiên có ID đó. Tuy nhiên, không có lý do tại sao các yếu tố này phải có ID. Sử dụng công cụ chọn khác để chọn chúng. Một vấn đề khác sẽ là '$ (this) .val()' trả về một chuỗi * trong khi mảng của bạn chứa các số. '" 10 "' và '10' không được coi là bằng nhau bởi' $ .inArray' (như tài liệu hướng dẫn rõ ràng chỉ ra). –

+0

'$ ('# question \\ [\\]')' trả về đầu vào hiện tại, anyways, bạn có thể viết câu trả lời của bạn? – Jonjie

+0

@Jonjie Các số trong mảng câu hỏi là '[1,2,3,4,5,6,7,8]'? Hay họ có 8 số đơn sắc do người dùng nhập? Và các mảng số khác như thế nào? Bạn có thể cung cấp một ví dụ về các mảng thực tế cần được so sánh với nhau không? – zer00ne

Trả lời

0

Ở đây bạn đi với một giải pháp https://jsfiddle.net/33zeL2fa/5/

$(document).ready(function(){ 
 
    var arrayLen = $('input[name="question[]"]').length; 
 
    var numArray = []; 
 
    for(i = 1; i <= arrayLen; i++){ 
 
    \t numArray.push(i); 
 
    } 
 

 
    $('input[name="question[]"').keypress(function(e){ 
 
    if(numArray.indexOf(parseInt(e.key)) != -1){ 
 
     $('#result').html("available"); 
 
     numArray.splice(numArray.indexOf(parseInt(e.key)), 1); 
 
    } else{ 
 
     $("#result").html("not available"); 
 
     e.preventDefault(); 
 
    } 
 
    }); 
 
    
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" name="question[]" placeholder="multipleChoice"><br><br> 
 
<input type="text" name="question[]" placeholder="trueFalse"><br><br> 
 
<input type="text" name="question[]" placeholder="shortAnswer"><br><br> 
 
<input type="text" name="question[]" placeholder="shortAnswer"><br><br> 
 
<input type="text" name="question[]" placeholder="description"><br><br> 
 
<input type="text" name="question[]" placeholder="multipleChoice"><br><br> 
 
<input type="text" name="question[]" placeholder="multipleChoice"><br><br> 
 
<input type="text" name="question[]" placeholder="trueFalse"><br><br> 
 

 
<span id="result"></span>

Tôi đã sử dụng jQuery keydown sự kiện.

More Cập nhật với xác nhận cô bạn đi https://jsfiddle.net/33zeL2fa/6/

$(document).ready(function(){ 
 
    var try1; 
 
    var arrayLen = $('input[name="question[]"]').length; 
 
    var numArray = []; 
 
    var convertedArray = []; 
 
    for(i = 1; i <= arrayLen; i++){ 
 
    \t numArray.push(i); 
 
    } 
 

 
    $('input[name="question[]"').keydown(function(e){ 
 

 
    \t if(e.which === 8 || e.keyCode === 8){ 
 
    \t numArray.push(parseInt($(this).attr('newval'))); 
 
     $(this).removeAttr('newval'); 
 
    } else { 
 
     if(numArray.indexOf(parseInt(e.key)) != -1){ 
 
     $('#result').html("available"); 
 
     $(this).attr('newval', e.key); 
 
     numArray.splice(numArray.indexOf(parseInt(e.key)), 1); 
 
     } else{ 
 
     $("#result").html("not available"); 
 
     e.preventDefault(); 
 
     } 
 
    } 
 
    }); 
 
    
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" name="question[]" placeholder="multipleChoice"><br><br> 
 
<input type="text" name="question[]" placeholder="trueFalse"><br><br> 
 
<input type="text" name="question[]" placeholder="shortAnswer"><br><br> 
 
<input type="text" name="question[]" placeholder="shortAnswer"><br><br> 
 
<input type="text" name="question[]" placeholder="description"><br><br> 
 
<input type="text" name="question[]" placeholder="multipleChoice"><br><br> 
 
<input type="text" name="question[]" placeholder="multipleChoice"><br><br> 
 
<input type="text" name="question[]" placeholder="trueFalse"><br><br> 
 

 
<span id="result"></span>

Hy vọng điều này sẽ giúp bạn.

+0

@Jonjie Ở đây bạn hãy cập nhật https://jsfiddle.net/33zeL2fa/9/. Giải pháp không có thuộc tính 'maxlength'. Xin lỗi về chuyện trả lời muộn. – Shiladitya

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