2015-03-06 3 views
0

ОБНОВЛЕНО Я новичок в jQuery, но программировал около двух лет на C#. Я хотел создать метод jQuery, который будет использоваться несколько раз, чтобы добавить текстовые поля. Я думал, что создаю функцию jQuery с параметрами, которые я бы установил с кнопок при нажатии. Вот мой JQuery код, это привычка обязательно работать, как я новичок, но, безусловно, даст рабочий процесс, что я намеревался достичьjQuery метод для добавления TextBox

$(document).ready(function() { 

function add(someClass) { 

    var count = $("."+someClass).length; 

    if (count <= 20) { 

     var newTextBox = $(document.createElement('text')); 

     newTextBox.appendTo("."+ someClass+":last"); 

     //$('.approvers:last').append($("<input type='text' value='' />")); 
    } 
} 

});

Вот как я намереваюсь вызывать функцию с помощью кнопок onclick.

<input type="button" value="+" id="someId" class="someCssClass" onclick="addText('approvers')" /> 

Я делаю это, чтобы избежать написания того же кода, чтобы вставлять текстовые поля, имеющие разные классы. Так ли это можно сделать? Все, что я хочу, это добавить новый TextBox в то же время, указав его класс из jquery.

+0

Не очень понятно, как вам то, что вы после этого. Не могли бы вы опубликовать ожидаемый результат, скажем, 4 текстовых поля? – lshettyl

+0

Не совсем понятно, для чего нужны параметры. Должен ли идентификатор быть одним из новых текстовых полей? Если да, вы не сможете дважды щелкнуть по кнопке, потому что у вас будет несколько элементов с тем же идентификатором, что испортится, когда вы попытаетесь его использовать. Пожалуйста, объясните более подробно, что должна выводить функция. – blex

+0

То, что я действительно хочу, - это добавить новый TextBox в класс динамически, когда нажимается кнопка, я обновил свой код с помощью того, что у меня получилось, но получаю ошибку ** ReferenceError: add не определен ** Что я делаю не так. Сначала проверьте обновленный код. – Dev

ответ

0

Ваш код поодаль, попробуйте следующее:

<input type="button" value="+" id="someId" class="addButton" data-target-class="someClass"/> 

<div class="someClass"> 
</div> 

И на JavaScript:

$(document).ready(function(){ 
    // Define a click handler for any input with the class addButton 
    $('input.addButton').click(function(){ 
     // Extract the class that this input button is targeting 
     var target_class = $(this).attr('data-target-class'); 
     // Add a textarea to that target 
     $("."+target_class).append("<textarea></textarea>"); 
    }); 
}); 

Вот пример: http://jsfiddle.net/1sfz4sda/

+0

Каково использование атрибута target-target? – Dev

+0

Мой ответ был частично предположением, основанным на вашем начальном вопросе и коде. В моем ответе я предполагаю, что ваш случай использования заключался в том, чтобы добавить текстовое поле к определенному элементу или группе элементов. Атрибут 'data-target-class' (который является произвольным именем, который я составил) относится к элементу (-ам), к которому вы хотите добавить текстовое поле. В этом случае я установил его в 'someClass', который является тем же классом, что и' div'. Как вы можете видеть в jsFiddle, нажатие кнопки добавляет текстовое поле к этому конкретному div. Если у вас было несколько div с этим классом, это добавило бы по одному текстовому полю каждому. – Joseph

0

Я тестировал ниже код и он работает , не помещайте свою функцию внутрь документа. уже

DEMO: http://liveweave.com/RkHq5o

Вот Код JavaScript


 
     function addText(cssClass) { 
 
     
 
      var count = $("."+cssClass).length; 
 
     
 
      if (count <= 20) { 
 
     
 
       var newTextBox = $(document.createElement('textarea')); 
 
     
 
       newTextBox.appendTo("."+cssClass); 
 
      
 
      } 
 
     
 
     }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<input type="button" value="+" id="someId" class="someCssClass" onclick="addText('approvers')" /> 
 
    
 
<div class="approvers"></div>

+0

Я попытался использовать ваш код, и это, как я вызвал метод из кнопки onclick event '' Я получаю сообщение об ошибке при отладке в браузере после нажатия метода, одна ошибка говорит ** ReferenceError: add не определен **, другой говорит ** TypeError: $ (.. .). createElement не является функцией ** Что мне делать? – Dev

+0

Я отредактировал ответ, теперь проверяйте ... можете ли вы показать ur веб-страницу, где u получить ошибку? – Vishnu

+0

Я заметил ошибку в вашем коде, эта строка кода не будет работать ** var newTextBox = $ (document) .createElement ('text')); ** Заменить на ** var newTextBox = $ (document.createElement ('text')); ** тогда ошибка, указывающая createElement, не является функцией. Тем не менее, я все еще получаю сообщение об ошибке, что моя функция еще не определена. – Dev

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