[jquery] jQuery로 다단계 양식 재설정

표준 리셋 버튼이 코딩 된 양식이 있습니다.

<input type="reset" class="button standard" value="Clear" />

문제는, 상기 형태는 다단계 정렬이며, 사용자가 단계를 채우고 나중에 리턴하면, 지우기 단추를 클릭 할 때 다양한 필드에 대한 ‘기억 된’값이 재설정되지 않는다는 것입니다.

jQuery 함수를 연결하여 모든 필드를 반복하고 ‘수동’으로 지우면 트릭을 수행 할 것이라고 생각합니다. 이미 양식 내에서 jQuery를 사용하고 있지만 속도를 높이기 때문에 각 필드를 ID별로 개별적으로 참조하는 것 외에는이 방법을 잘 모릅니다. 매우 효율적이지 않습니다.

도움이 필요한 경우 TIA.



답변

2012 년 3 월에 업데이트되었습니다.

그래서 원래이 질문에 답한 지 2 년이 지나서야 그것이 큰 혼란으로 바뀌 었다는 것을 알게되었습니다. 나는 그것이 되돌아온 시간에 관한 것이라고 생각하며, 가장 많이지지되고 받아 들여 졌기 때문에 대답을 진정으로 정확하게 만듭니다.

레코드의 경우 원래 포스터가 요청한 것이 아니기 때문에 Titi의 답변이 잘못되었습니다. native reset () 메소드를 사용하여 양식을 재설정 할 수는 있지만이 질문은 기억 된 양식을 지우려고합니다. 이 방법으로 재설정하면 양식에 남아있는 값입니다. 이것이 “수동”리셋이 필요한 이유입니다. 나는 대부분의 사람들이 Google 검색 에서이 질문에 도달했다고 생각하고 실제로 reset () 메소드를 찾고 있지만 OP가 이야기하는 특정 경우에는 작동하지 않습니다.

원래의 대답은 다음과 같습니다.

// not correct, use answer below
$(':input','#myform')
.not(':button, :submit, :reset, :hidden')
.val('')
.removeAttr('checked')
.removeAttr('selected');

OP를 포함하여 많은 경우에 효과가 있지만 주석 및 기타 답변에서 지적한 것처럼 모든 값 속성에서 라디오 / 확인란 요소를 지 웁니다.

정확한 대답은 (완벽하지는 않음) 다음과 같습니다.

function resetForm($form) {
    $form.find('input:text, input:password, input:file, select, textarea').val('');
    $form.find('input:radio, input:checkbox')
         .removeAttr('checked').removeAttr('selected');
}

// to call, use:
resetForm($('#myform')); // by id, recommended
resetForm($('form[name=myName]')); // by name

은 Using :text, :radio그들이으로 평가 결국 스스로에 의해 등 선택기하는 jQuery를하여 나쁜 사례로 간주되고 *:text는 더 이상은해야보다 오래 걸릴 수있다. 화이트리스트 방식을 선호하며 원래 답변에이 방식을 사용했으면합니다. 어쨌든 input선택기 의 일부와 양식 요소의 캐시를 지정하면 여기에서 최상의 성능을 발휘할 수 있습니다.

select 요소에 대한 사람들의 기본값이 빈 값을 갖는 옵션이 아닌 경우이 답변에는 여전히 약간의 결함이있을 수 있지만 얻을 수있는만큼 일반적이며 이것이 사례별로 처리되어야합니다 .


답변

에서 http://groups.google.com/group/jquery-dev/msg/2e0b7435a864beea :

$('#myform')[0].reset();

다음 myinput.val('')과 같이 입력하면 “재설정”을 100 % 에뮬레이션하지 않을 수 있습니다.

<input name="percent" value="50"/>

예를 들어 myinput.val('')기본값이 50 인 입력을 호출 하면 빈 문자열로 설정되고 호출 myform.reset()하면 초기 값 인 50으로 재설정됩니다.


답변

Paolo의 대답에는 큰 문제가 있습니다. 치다:

$(':input','#myform')
 .not(':button, :submit, :reset, :hidden')
 .val('')
 .removeAttr('checked')
 .removeAttr('selected');

.val('')줄은 또한 value확인란과 라디오 버튼에 지정된 모든 항목 을 지 웁니다. 따라서 (나처럼) 당신이 이런 식으로하면 :

<input type="checkbox" name="list[]" value="one" />
<input type="checkbox" name="list[]" value="two" checked="checked" />
<input type="checkbox" name="list[]" value="three" />

허용 된 답변을 사용하면 입력 내용이 다음과 같이 변환됩니다.

<input type="checkbox" name="list[]" value="" />
<input type="checkbox" name="list[]" value="" />
<input type="checkbox" name="list[]" value="" />

죄송합니다. 그 값을 사용하고있었습니다!

확인란과 라디오 값을 유지하는 수정 된 버전은 다음과 같습니다.

// Use a whitelist of fields to minimize unintended side effects.
$('INPUT:text, INPUT:password, INPUT:file, SELECT, TEXTAREA', '#myFormId').val('');
// De-select any checkboxes, radios and drop-down menus
$('INPUT:checkbox, INPUT:radio', '#myFormId').removeAttr('checked').removeAttr('selected');


답변

jQuery 플러그인

필요한 곳 ​​어디에서나 쉽게 사용할 수 있도록 jQuery 플러그인을 만들었습니다.

jQuery.fn.clear = function()
{
    var $form = $(this);

    $form.find('input:text, input:password, input:file, textarea').val('');
    $form.find('select option:selected').removeAttr('selected');
    $form.find('input:checkbox, input:radio').removeAttr('checked');

    return this;
}; 

이제 전화를 걸어서 사용할 수 있습니다.

$('#my-form').clear();


답변

양식을 지우는 것은 약간 까다 롭고 간단하지 않습니다.

jQuery 양식 플러그인 을 사용하고 clearForm 또는 resetForm 기능 을 사용하도록 제안하십시오 . 대부분의 코너 케이스를 처리합니다.


답변

document.getElementById ( ‘frm’). reset ()


답변

나는 보통 :

$('#formDiv form').get(0).reset()

또는

$('#formId').get(0).reset()