2010-07-14 3 views
22

jQuery에는 실제 양식을 문제없이 복제하는 clone() 기능이 있지만 양식에 입력 된 값은 보존되지 않습니다.jQuery 또는 javascript에서 양식 필드 값을 복제하는 방법이 있습니까?

이 문제를 해결할 방법이 있습니까?

샘플 코드를 많이 보내 주시면 감사하겠습니다.

+0

당신이 좀 더 문맥을 줄 수있는 값? 빠른 테스트는 여기에 문제가 없습니다 : http://jsfiddle.net/meGyg/ –

+0

양식을 통해 데이터를 변경 한 다음 문제를 복제하려고하면 문제가 발생한다고 생각합니다. 귀하의 바이올린을 포크 : http://jsfiddle.net/F9aWu/ 양식을 변경하려고 시도한 다음 복제를 클릭하십시오. – hookedonwinter

+0

나중에 @ [nick craver]의 해결책은 textarea 부분을 제외하고는 잘 작동합니다. – hookedonwinter

답변

7

메모에서 줄기를 제거하는 방법은 다음과 같습니다. 다음과 같은 형식으로 :

<form id="old"> 
    <textarea>Some Value</textarea> 
    <input type="text" value="Some Value" /> 
    <input type="checkbox" value="bob" checked /> 
    <br /> 
</form> 

<input type="button" value="Clone" id="clone" /> 

이 jQuery를이 텍스트 영역을 포함하여 작동합니다

$('input#clone').click(
    function() 
    { 
     $('form#old textarea').text($('form#old textarea').val()) 
     $("form#old").clone().attr('id', 'new_form').appendTo("body") 

    } 
) 

데모 : http://jsfiddle.net/Jux3e/

0

당신이 jQuery를 플러그인을 사용할 수 있습니다.

/** 
* clone element, including the textarea part 
*/ 


$.fn.clone2 = function(val1, val2) { 
    // ret for return value, cur for current jquery object 
    var ret, cur; 
    ret = $(this).clone(val1, val2); 
    cur = $(this); 

    // copy all value of textarea 
    ret.find('textarea').each(function() { 
     var value_baru; 

     // use name attribute as unique id 
     value_baru = sek.find('[name="$name"]'.replace('$name', $(this).attr('name'))) 
         .val(); 

     // set the new value to the textarea 
     $(this).val(value_baru); 
    }); 

    // return val 
    return ret; 
} 
24

같은 문제로 실행, 간단한 해결책 :

// touch all input values 
$('input:text').each(function() { 
    $(this).attr('value', $(this).val()); 
}); 

var clones = $('input:text').clone(); 
트릭이, 당신은 온 - '를 입력 그렇지 않으면 데이터를 DOM 트리의 실제'값 '속성을 변경하는 것입니다

-fly이 문제 발견 상태 '

+0

탈출 할 필요가 없습니까? –

+1

@ChrisStryczynski 텍스트 입력이 HTML을 표시 할 수 없다고 이미 생각한 값으로 설정하고 따옴표는 일반 HTML을 인쇄하는 대신 문자열 속성 값을 설정하기 때문에 문제가되지 않습니다. 암호. – sled

+0

이것은 입력 : 텍스트에 효과적이지만 체크 상자, 라디오 버튼, 텍스트 영역 등은 어떻게됩니까? –

0

'에만 DOM에 존재하는 '이 래퍼 썼다 :

$.fn.cloneField = function(withDataAndEvents) { 
var clones = []; 
this.each(function(){ 
    var cln = $(this).clone(withDataAndEvents); 
    cln.val($(this).val()); 
    clones.push(cln.get(0)); 
}); 
return jQuery(clones); }; 
3

을 확인 그래서 파일을 포함시킨 다음 잊어 버릴 수 있습니다. 분명히 선택 값을 복제하는 데 문제가 있으며이 파일도이 문제를 해결합니다.

이 파일의 링크는 http://bugs.jquery.com/ticket/3016입니다. 버그는 4 살입니다. 텍스트 영역을 복사 할

0

사용이 코드는

clonedObject.find(textareaObject).val(originalObject.find(textareaObject).val()); 
관련 문제