문제

입력의 실제 값 속성을 재설정하여 양식이로드 된 경우 원래 값이 아니라 재설정 된 경우 해당 값으로 다시 재설정 할 수 있도록 입력의 실제 값 속성을 재설정하려고합니다. 문제는 이러한 변화가 효과가없는 것 같습니다. 나는 둘 다 시도했다 :

$(this).attr('value', $(this).val());

만큼 잘....

$(this).val($(this).val());

이것들 중 어느 것도 실제로 변화합니다 value="" 입력의 속성 (양식이 재설정 될 때 사용되는 입력 속성). 문제는 누군가가 양식 (Ajax를 통해)을 저장 한 다음 다시 편집하고 재설정을 누르면 (이 시간을 저장 함), 마지막으로 저장된 값이 아니라 페이지가로드 한 원래 값으로 돌아갑니다. 그것이 내가 얻으려고하는 것입니다. 나는 이것에 관한 방법이 있다는 것을 알고 있지만 (로컬 변수 또는 무언가에 보관) jQuery 솔루션이 훨씬 나을 것입니다. 어떤 아이디어 ??

도움이 되었습니까?

해결책

당신이 다음과 같은 일을 할 때 :

$(this).val($(this).val());

그것은 실제로 다음과 같이 번역됩니다.

var temp = $(this).val());
$(this).val(temp);

본질적으로, 그것은 단지 같은 가치를 다시 넣습니다.

당신이 원하는 것은 문서로드 또는 AJAX 요청에있는 것입니다. 값을 변수에 저장 한 다음 양식이 재설정 될 때 검색하십시오.

다른 팁

멋진 트릭처럼 들립니다. 여기에 또 다른 트릭이 있습니다.

전체 요소를 교체하여 DOM을 수정할 수 있습니다.

$('#my_input').val("new_value_here");

당신이 사용할 수있는:

$('#my_input').replaceWith(' < input type="text" value="new_value_here" />');

나는 이것에 대한 해결책을 생각해 냈다 ...

양식을 저장할 때 (Ajax를 통해, 성공 콜백) :

// Set 'savedValue' attr on elements (for when reset, will reset to last saved values)
$('#myForm input').each(function() {
    $(this).attr('savedValue', $(this).val());
});

양식을 재설정해야 할 때 :

// Reset form
if($('#myForm input:first').attr('savedValue')!=undefined) {
    // Have saved values, reset to last saved values
    $('#myForm input').each(function() {
        $(this).val($(this).attr('savedValue'));
    });
}
else {
    // No saved values, reset form
    $('#myForm')[0].reset();    
}

이것은 텍스트 상자에 적합하며 약간의 조정으로 모든 입력 유형으로 작업 할 수 있습니다. 입력이 많아서 가능한 경우 수동으로 저장/재설정을 피하고 싶었습니다. 이것은 좋은 플러그인 일 것입니다 ... 아마 내일

그냥 사용하십시오 thing.value="foo"; 일이 jQuery 객체 일 때 작동하는지 확인하십시오. 사용 attr('value', $(this).val()) 당신이 원하는 방식으로 작동하지 않을 것입니다

로컬 변수보다 더 나은 jQuery 데이터 방법을 사용하여 재설정 값과 재설정 할 요소를 저장할 수 있습니다.

저장시 :

$(this).data("ResetValue", $(this).val());

재설정 :

$(this).val($(this).data("ResetValue"));

선택기를 적절하게 변경하고 Ryan이 언급 한대로 정의되지 않은 수표를 추가 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top