2009-09-27 8 views
1

J'ai les nombres 'n' dans une TEXTAREA sur un formulaire. Une fois que l'utilisateur a saisi une valeur dans TEXTAREA, je dois valider qu'il ne s'agit pas d'une copie d'une autre valeur.javascript Validation de textarea à entrées multiples

Exemple:

TEXTAREA_1 value = 
10 
20 
30 
40 
10 

Il doit alerter et dire «valeur 10 a été entré plus d'une fois. S'il vous plaît aidez-moi avec le JavaScript.

Répondre

1
var nums = textarea.value.split('\n').sort(); 
var prev; 
for (var i = 0; i < nums.length; i++) { 
    if (prev && nums[i] == prev) { 
     alert('value ' + prev + ' was entered more than once'); 
     break; 
    } 
    prev = nums[i]; 
} 
+0

Hai Anatoliy, votre réponse est juste pour moi, maintenant mon script pour cette scipt est terminée. merci beaucoup ... – Firdi

+0

+ trier les effets. Cependant, notez que ceci est purement basé sur une chaîne, il ne fait pas de comparaison numérique, donc '0' est une chose différente de '00' ou '0.0'. – bobince

0

pur solution DOM/JS:

<form id="foo"> 
    <textarea id="numbers-textfield" cols=40 rows=20>10 
    20 
    30 
    40 
    50 
    60 
    60</textarea> 
    <br> 
    <input type=submit value=submit> 
</form> 
<script> 
    (function() { 
    var form = document.getElementById('foo'), 
     textarea = document.getElementById('numbers-textfield'), 
     inArray = function(value, arr) { 
     for (var i = arr.length; i--;) { 
      if (value == arr[i]) { 
      return true; 
      } 
     } 
     return false; 
     } 


    form.onsubmit = function() { 
     var value = textarea.value.split(/\s+/), len = value.length, stack = [], errors = false; 


     for (var i = 0; i<len; ++i) { 
     var isNum = !isNaN(value[i]); 
     if (!isNum) { continue; } 
     if (errors) { break; } 
     if (!inArray(value[i], stack)) { 
      stack.push(value[i]); 
     } else { 
      errors = true; 
      alert(value[i] + ' already in stack'); 
     } 
     } 

     if (errors) { 
     return false; 
     } 

    } 

    })(); 
</script> 
+0

@anon: Pourquoi le downvote? A cause du jQuery? –

+1

Je pense, downvote, parce que ce n'est pas la solution de cette tâche. – Anatoliy

+0

Exactement. Cela ne marchera pas! Aussi simple que cela. –

0
$(function() { 
    $("form").submit(function() { 
    var txt = $("#TEXTAREA_1"); 
    var vals = txt.val().split("\n"); 
    var len = vals.length; 

    for(var i = 0; i < len; i++) { 
     for(var j = i + 1; j < len; j++) { 
     if(vals[i] === vals[j]) { 
      alert("Duplicate values are not allowed"); 
      txt.select(); 
      return false; 
     } 
     } 
    } 
    }); 
}); 

It works

+0

Hai Josh, merci pour votre réponse, j'ai la réponse d'Anatoly. merci beaucoup ... – Firdi

+0

De rien! En fait, j'ai dû le faire avant. Cela pourrait être facilement changé pour ne pas utiliser jQuery, aussi. –

Questions connexes