2011-01-12 6 views
0

Я новичок в javascript, и я пытаюсь написать скрипт, который определяет количество символов в поле boxarea, а затем сравнивает длину счета с массивом символов. Если число boxarea больше заданного предела, элемент массива имеет другой класс, который переключается.Число символов с несколькими ограничениями

Если я быть запутанным, может быть, это (очень плохой: *) скрипт поможет:

$(document).ready(function(){ 
    limit1.count = 10; 
    limit2.count = 15; 
    limit3.count = 20; 


    function getCount (textarea) { 
     var i=0; 
     for (i=0;i<=5;i++) 
     { 
     if(textarea.value.length > limit[i].count) { 
      $(limit[i].toggleClass("unavailable"); 
     } 
     } 
     } 
}); 
+0

1. Где и что такое limit1, limit2, limit3 (где они назначены, например?); 2. Как вы называете 'getCount'; 3. Где находится 5 в вашем цикле for ?; 4. почему у вас есть 'limit1', а затем попытайтесь ссылаться на него как на массив (он должен быть одним?); 5. Ожидаете ли вы, что класс будет переключаться более одного раза, если значение действительно длинное (из того, что я вижу, и четное количество переключений будет выглядеть так, как будто оно никогда не было переключено). –

+0

Ограничение 1,2,3 и т. Д. Назначаются мной. Я предполагаю, что я бы назвал getCount отдельным сценарием, например $ (textarea) .getCount() ;. Предел также является именем div, к которому я хочу включить отдельный класс. Должен ли я представить полный пример? – Gabriel

ответ

1

Это должен быть ваш стиль:

<style type="text/css"> 
.box {width: 100px; height: 100px; display: block; margin: 10px; float: left; 
    background-color: green;} 
.unavailable {background-color: red;} 
</style> 

HTML-:

<div><textarea name="textarea" id="textarea" cols="45" rows="5"></textarea></div> 

<div id="box1" class="box">Box 1</div> 
<div id="box2" class="box">Box 2</div> 
<div id="box3" class="box">Box 3</div> 

И javascript:

<script type='text/javascript' src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" ></script> 
<script type='text/javascript'> 
    function validate() 
    { 
     var validation = { 
      '#box1': 10, 
      '#box2': 15, 
      '#box3': 20 
     }; 

     $.each(validation, function(elem, max) { 
      $(elem).removeClass("unavailable"); 
      if($('#textarea').val().length > max) 
       $(elem).addClass("unavailable"); 
     }); 
    } 

    $(document).ready(function(){ 
     $('#textarea').keydown(validate); 
     validate(); 
    }); 
</script> 
+0

Эрик, спасибо! Определенно на правильном пути. Если поле textarea называется «quote», я бы вызвал вашу функцию с помощью отдельного скрипта, например $ (quote) .validate(); ? Во-вторых, подсчет валидации (например, id1, id2), также являются именами div, которые я хочу изменить для класса. – Gabriel

+0

Идентификатор должен быть уникальным. '# id1' - это идентификатор, поэтому он должен использоваться только одним элементом (будь то ваш div или ваша текстовая область). Я немного изменил свой ответ, чтобы включить пример использования. –

+0

Я просто попробовал, но он не работает. Не знаю, где искать проблему :( – Gabriel

Смежные вопросы