2017-08-30 14 views
6

में किसी सरणी में किसी सरणी में मान मौजूद है या नहीं, मैंने इंटरनेट पर खोज की है लेकिन नोटिंग मेरी समस्या के साथ समान प्रतीत होती है। मैं चाहता हूं कि text फ़ील्ड में प्रश्नों के लिए question numbers जोड़ें, और संख्या unique होनी चाहिए। मैं यह जांचने की कोशिश कर रहा हूं कि array of numbers प्रश्न (e.g. 8 questions) के प्रश्नों की एक श्रृंखला में मौजूद है, तो यदि यह सरणी में है, तो आप not entered yet पर नंबर दर्ज कर सकते हैं, लेकिन मेरा कोड काम नहीं कर रहा है। मैं उसे कैसे कर सकता हूँ? संदर्भ के लिए कृपया नीचे अपना कोड देखें।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>

स्वीकृत उत्तर:लेकिन एक अद्यतन

Accepted answer by @Shiladitya

+4

आईडी अद्वितीय होना चाहिए। '$ ('# प्रश्न \\ [\\]') 'केवल उस आईडी के साथ पहला तत्व चुनेंगे। हालांकि, इन तत्वों के पास आईडी होने का कोई कारण नहीं है। उन्हें चुनने के लिए एक अलग चयनकर्ता का प्रयोग करें। दूसरी समस्या यह होगी कि '$ (यह) .val()' एक * स्ट्रिंग * देता है जबकि आपके सरणी में संख्याएं होती हैं। '10" 'और' 10' को '$ .inArray' के बराबर नहीं माना जाता है (जैसा कि दस्तावेज़ीकरण स्पष्ट रूप से इंगित करता है)। –

+0

'$ ('# प्रश्न \\ [\\]') 'वर्तमान इनपुट देता है, वैसे भी, क्या आप अपना उत्तर लिख सकते हैं? – Jonjie

+0

@Jonjie प्रश्न सरणी में संख्या '1,2,3,4,5,6,7,8]' है? या वे उपयोगकर्ता द्वारा दर्ज 8 यूनिक संख्याएं हैं? और संख्याओं की अन्य सरणी कैसी है? क्या आप इन वास्तविक सरणी का एक उदाहरण प्रदान कर सकते हैं जिन्हें एक-दूसरे से तुलना करने की आवश्यकता है? – zer00ne

उत्तर

0

यहाँ आप एक समाधान 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>

मैं jQuery keydown घटना का उपयोग किया है। सत्यापन साथ

अधिक अद्यतन उसे आप 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>

आशा इस मदद मिलेगी जाना।

+0

@ जॉन्ज़ी यहां आप एक अपडेट https://jsfiddle.net/33zeL2fa/9/ के साथ जाते हैं। 'Maxlength' विशेषता के बिना समाधान। देर से जवाब देने के लिए क्षमा करें। – Shiladitya

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^