2011-08-25 8 views
0

가 dynamicField이 (http://www.quackfuzed.com/demos/jQuery/dynamicField/index.cfm)동적으로 변화 요소는

는 원래 입력 요소가 있어야합니다이 스크립트 내 도와주세요 속성 :

<input type='text' name='name_1' id='name_1' value='' class='textInput removable' /> 

하지만이 필요합니다 내가 이것을 만들었을 때 <input type='text' name='name_1[]' id='name_1[]' value='' class='textInput removable' /> (스크립트를하지 않았다 작동합니다.)

따라서 []을 name_1 뒤에 추가해야합니다.

//jQuery dynamicField plugin 
//Copyright 2009, Matt Quackenbush (http://www.quackfuzed.com/) 

//Find usage demos at http://www.quackfuzed.com/demos/jQuery/dynamicField/index.cfm) 
//Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
//and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. 

//Version: 1.0 
//Date: 8/13/2009 

; 
(function($) { 
    $.fn.dynamicField = function(options) { 
     if ($(this).attr("id") == undefined) { 
      alert("The dynamicField plugin could not be initialized.\n\nPlease check the selector."); 
      return $; 
    } 

    var f = $(this); 

    var settings = $.extend({ 
     maxFields: 5, 
     removeImgSrc: "images/icons/cross.png", 
     spacerImgSrc: "images/spacer.gif", 
     addTriggerClass: "add-field-trigger", 
     removeImgClass: "remove-field-trigger", 
     hideClass: "hide", 
     cloneContainerId: f.attr("id").replace(/^(.+)([_-][0-9]+)$/,"$1"), 
     rowContainerClass: f.attr("class"), 
     labelText: f.children("label") 
         .html(), 
     baseName: f.children("input") 
          .attr("name") 
          .replace(/^(.+[_-])([0-9]+)$/,"$1"), 
     addContainerId: "add-" + f.children("input") 
          .attr("name") 
          .replace(/^(.+)([_-][0-9]+)$/,"$1") 
          .replace(/_/g,"-") + "-container" 
    },options); 

    var getFields = function() { 
     return $("div." + settings.rowContainerClass); 
    }; 

    // handle hide/show, etc 
    var addRemoveBtnCk = function() { 
     var fields = getFields(); 
     var len = fields.length; 

     fields.each(function(i,elem) { 
      $(elem) 
       .children("img") 
       .attr({ 
        "src":(len == 1) ? settings.spacerImgSrc : settings.removeImgSrc, 
        "class":(len == 1) ? "" : settings.removeImgClass 
       }); 
     }); 

     if (len > (settings.maxFields-1)) { 
      $("div#" + settings.addContainerId).addClass(settings.hideClass); 
     } else { 
      $("div#" + settings.addContainerId).removeClass(settings.hideClass); 
     } 
    }; 

    // handle field removal 
    $("img." + settings.removeImgClass).live("click",function() { 
     // remove the selected row 
     $(this).parent("div." + settings.rowContainerClass).remove(); 

     // rebrand the remaining fields sequentially 
     getFields().each(function(i,elem) { 
      var pos = new Number(i+1); 
      var d = $(elem) 
         .attr("id",settings.cloneContainerId + "-" + pos); 

      d.children("label") 
         .attr("for",settings.baseName + pos) 
         .html((pos > 1) ? "" : settings.labelText); 

      d.children("input") 
         .attr({ 
          "id":settings.baseName + pos, 
          "name":settings.baseName + pos 
         }); 
     }); 

     addRemoveBtnCk(); 
    }); 

    // handle field add 
    $("div#" + settings.addContainerId + " span." + settings.addTriggerClass).click(function() { 
     var len = getFields().length; 
     var pos = new Number(len+1); 
     var newDiv = f 
         .clone() 
         .attr("id",settings.cloneContainerId + "-" + pos) 
         .addClass(settings.rowContainerClass); 

     newDiv.children("label") 
         .attr("for",settings.baseName + pos) 
         .html(""); 

     newDiv.children("input") 
         .attr({ 
          "id":settings.baseName + pos, 
          "name":settings.baseName + pos, 
          "value":"" 
         }); 

     newDiv.children("img") 
         .attr("src",settings.removeImgSrc); 

     if (len > 0) { 
      $("div#" + settings.cloneContainerId + "-" + len).after(newDiv); 
     } else { 
      $("div#" + settings.addContainerId).before(newDiv); 
     } 

     addRemoveBtnCk(); 
    }); 
}; 
})(jQuery); 

이 여러분 모두 감사합니다 ... 이 코드 모든 necesary 편집,하지만 난 잘 모릅니다.

newDiv.children("input").attr({ 
    "id":settings.baseName + pos + "[]", 
    "name":settings.baseName + pos + "[]", 
    "value":"" 
}); 

PS : 당신은 당신이 붙여 넣은 코드를 사용해야하는 경우

답변

0

는, 당신이이 부분을 변경할 수 있다는 것을 나에게 보인다 그것은 당신의 // handle field add 섹션 : 저는 개인적으로했을

에 있어요 붙여 넣은 코드를 수정하지 않고이 트릭을 사용하면됩니다.

$(function() { 
    $('myinput').attr('name', $('myinput').attr('name') + '[]'); 
    $('myinput').attr('id', $('myinput').attr('id') + '[]'); 
});