2012-07-03 2 views
5

jQuery를 사용하여 HTML 페이지의 데이터를 읽습니다. 이 페이지에는 사용자가 값을 입력 할 수있는 <input> 태그가 포함 된 <form> 요소가 있습니다.
초기화 될 때이 양식에는 <input> 요소에 대한 일부 기본값이 있습니다. 이 양식을 제출할 때 html() 메서드를 사용하여이 페이지의 현재 상태 HTML 문자열을 가져 오지만이 결과 문자열에 새 값이 아니라 이전 값 (기본 입력 값)이 포함 된 이유는 아닙니다.
html()을 호출하기 전에 사용자가 입력 한 값을 <input> 요소로 업데이트하거나 유지하는 방법이 있습니까? 어떻게하면 jQuery 메서드를 사용하여 최신 값을 포함하는 문자열을 얻을 수 있습니까?
정말 고마워요!jQuery : html() 함수는 이전 데이터를 양식으로 가져옵니다.

+2

어디 코드입니다 ..! –

+0

* 왜이 페이지 *의 현재 상태의 HTML 문자열을 가져와야합니까? – VisioN

+0

전체 페이지를 가져 오기 위해 html을 사용하는 이유는 이상합니다. 직렬화를 사용하여 양식의 모든 값을 선택할 수 있어야합니다. –

답변

5

그러나 무엇을 하려는지 이상하지 않지만 필요한 것은 양식 요소의 값 속성을 업데이트하는 것입니다.

$("form input").attr("value", function() { 
    return this.value; 
}); 

DEMO : 기본적으로http://jsfiddle.net/BXha6/

+0

정말 고마워요. 사실, 당신의 제안은이 문제를 해결하는 데 도움이되지 못했지만 계속해서 나아갈 수있는 단서를주었습니다. 내가 jsfiddle에서 만든 데모를 시도했는데 jQuery 1.7.1에서 작동했지만 1.5.2로 다운 그레이드하면 오류가 발생했습니다.^_ ^. 따라서 jQuery 1.5.2에는 신비한 점이있을 것입니다. 나는 당신의 단서를 다른 방식으로 적용했다 : '$ ("form input").attr ("defaultValue", function() { return this.value; }), ' 그리고 잘됐다! –

2

JQuery와 html() 기능은 defaultValuedefaultChecked 특성을 유지하는 대신 사용하는 것입니다 그것은 다음과 같은 코드 (형태 submit 처리기에 넣어)을 수행 할 수 있습니다 현재 값/선택 (JavaScript innerHTML처럼). 이 문제를 해결하려면 먼저 jQuery prop() : Read the Documentation on prop()을 사용해야합니다. 코드 주어진 예를 들어

:

<form action='/'> 
    <input type='radio' value='1' checked name='first' /> 
    <input type='radio' value='2' name='first' /> 

    <input type='checkbox' value='yes' /> 

    <input type='text' value='Start Text' name='second' /> 
</form> 

$('form').html() 

는 항상 출력 정확한 코드는 관계없이 선택/추가 한 값 무슨/수정 된 것이다.

은 속성 요소의 값을 변환하는 기능을 실행, 그것을 해결하려면 현재 페이지 상태가 표시 될 때

$("form input[type='radio']").each(function(){ 
    if (this.checked){ 
     $(this).prop("defaultChecked",true); 
    } else { 
     $(this).prop("defaultChecked",false); 
    } 
}); 
$("form input[type='checkbox']").each(function(){ 
    if (this.checked){ 
     $(this).prop("defaultChecked",true); 
    } else { 
     $(this).prop("defaultChecked",false); 
    } 
}); 
$("form input[type='text']").each(function(){ 
    $(this).prop("defaultValue",$(this).val()); 
}); 

alert($(form).html()); //or var the_code = $(form).html(); 

이제 HTML을해야합니다.

0

텍스트 영역 비트는 해당 요소 유형을 수행하는 방법을 찾고 있다면 조금 다릅니다

$("textarea").html(function() { 
    return this.value; 
}); 

http://jsfiddle.net/BXha6/7/

관련 문제