2009-06-18 2 views
1

그래서이 레거시 레일스 코드베이스를 상속했으며 페이지 새로 고침 이후에도 지정된 양식에 값 (DB에 아직 저장되지 않은)이있는 곳을 수정해야하는 버그가 있습니다.새로 고침 후 값을 유지하는 양식

사용 사례 : 사용자가 양식의 데이터를 채우지 만 제출을 누르지 않습니다. 사용자 브라우저에서 새로 고침 버튼을 클릭합니다. 전체 페이지를 새로 고치는 대신 양식의 값이 유지됩니다.

어디서 볼 수 있습니까? 간단하고 제한적인 Rails 환경에서 이것은 기본적으로 발생하는 일이 아니므로 어딘가에 코딩되어야합니다.

답변

0

에게 CTRL + F5를 눌러 사용자

- 편집 브라우저가 버그, 또는 뭔가하지 않는 한 다른 가 아닌 작품 내 경험에 항상 press CTRL+F5을 사용자에게 (말할 수없는 경우 잘못된 것), 그냥 여행 onload 이벤트에 form.reset() 여행. 그러면 양식의 필드가 기본값으로 지워집니다. 필드에 기본값이있는 경우 (예 : < 입력 유형 = "텍스트"값 = "여기에 이름 입력"/ >) .reset()을 실행하면 기본값으로 재설정됩니다.

3

때때로 브라우저에서이를 수행합니다. (나는 자동 채우기 드롭 다운을 말하는 것이 아니며, 브라우저는 부분적으로 채워진 양식에 대해서만 말하고 제출하지 않고 새로 고친다.)

HTML 소스 창을 확인하여 필드의 값이 실제로 Rails 앱에서 나오는지 확인하십시오.

이전 입력으로 인해 브라우저에서 제공된 값은 VALUE 특성에 없지만 서버에서 제공 한 값은됩니다. 이있을 수 있습니다 피하기위한

일부 옵션 :

  • 가 POST를 사용하여 양식을 사용자에게 전송합니다. 따라서 새로 고침을하면 "다시 제출 하시겠습니까?"등의 결과가 나타납니다. 생각하면 브라우저는이 상황에서 모든 필드를 미리 채울 것입니다 (사용자가 게시 한 다음 뒤로 버튼을 눌렀을 때와 동일).
  • 양식 필드 값을 지우려면 onload() 이벤트를 사용하십시오.

아마도 더 간단한 해결책이있을 것입니다 ... Ctrl-F5는 때때로 트릭을하지만, 전에는 작동하지 않는다고 생각한 적이 있습니다.

1

난 그냥이 문제도 만났고 심지어 심지어 <body onload="myform.reset()"> 작동하지 않았다. 좋든 나쁘 든간에 숨겨진 입력을 카운터로 사용하기 때문에 (예를 들어, 파일 업로드 필드의 동적 수를 추적하기 위해) 특히 문제가있었습니다. 적용 할 수없는 경고 메시지가 나타나지 않게하려면 다시로드 할 때 재설정해야합니다. 리셋 버튼을 버리고 링크를 사용하여 사내 목적으로 "고정"했습니다. <input type="reset"/> 대신 <a href=".">Reset</a> (파일 이름은 index.php 임)을 사용하고 있습니다. 우아한 것은 아니지만 제 목적을 위해 작동합니다.

관련 문제