2009-09-27 9 views
1

양식의 TEXTAREA에 'n'숫자가 있습니다. 사용자가 TEXTAREA에 값을 입력 한 후에 다른 값의 중복이 아닌지 확인해야합니다.자바 스크립트 다중 입력 텍스트 영역 유효성 확인

예 :

TEXTAREA_1 value = 
10 
20 
30 
40 
10 

그것은 경고하고 말을해야 '값을 10 번 이상 입력했습니다'. 자바 스크립트를 도와주세요.

답변

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

해 Anatoliy, 당신의 대답은 바로 나를 위해, 지금이 scipt에 대한 내 스크립트가 완료되었습니다. 매우 고마워요. – Firdi

+0

+1 레버리지 정렬. 그러나 이것은 순수한 문자열 기반이며, 숫자 비교를하지 않으므로 '0'은 '00'또는 '0.0'과 다른 것입니다. – bobince

0

순수 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 : 왜 downvote? jQuery 때문에? –

+1

나는이 작업의 해결책이 아니기 때문에, downvote라고 생각한다. – Anatoliy

+0

정확합니다. 이것은 작동하지 않습니다! 그처럼 간단합니다. –

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

하이 조쉬, 답변 해 주셔서 감사합니다. 아나톨리의 답변을드립니다. 대단히 감사합니다 ... – Firdi

+0

당신을 환영합니다! 나는 실제로 이것을하기 전에해야만했다. 이것은 jQuery를 사용하지 않기 위해 쉽게 변경 될 수 있습니다. –

관련 문제