jQuery를 사용하여 양식 필드 지우기


402

양식의 모든 입력 및 텍스트 필드를 지우고 싶습니다. reset클래스 와 함께 입력 버튼을 사용할 때 다음과 같이 작동합니다 .

$(".reset").bind("click", function() {
  $("input[type=text], textarea").val("");
});

그러면 양식의 필드뿐만 아니라 페이지의 모든 필드가 지워집니다. 실제 재설정 버튼이 존재하는 형태에 대해서만 선택기가 어떻게 표시됩니까?



답변:


487
$(".reset").click(function() {
    $(this).closest('form').find("input[type=text], textarea").val("");
});

49
당신의 input[type=password]분야를 잊지 마십시오 .
SammyK

64
이 답변은 원래 질문에 적용됩니다. 텍스트 필드 이상의 것을 원하는 사람들은 필요에 따라 코드를 추가해야합니다.
ShaneBlake

2
또한 HTML5에는 type = password (SammyK와 같은) 이외의 다른 유형의 입력이 있습니다 : type = url, type = digits, type = email 등 http://www.w3.org/TR/html5/forms .html # states-of-the-type-attribute
Gabriel

6
작은 팁 :이 선택기는 암시 적 type = text에 의존하는 입력 요소를 선택하지 않으므로 마크 업에 type = text를 명시 적으로 포함해야합니다. 명백 할 수도 있지만, 지금은 아니 었습니다. :-)
Elbin

2
@CaptSaltyJack : 리셋은 그 같은 일이 ... 그들을 삭제로하지 않은 기본값 것을
ShaneBlake

628

jQuery 1.6 이상 :

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

jQuery <1.6의 경우 :

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

이 게시물을 참조하십시오 : jQuery로 다단계 양식 재설정

또는

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

jQuery가 제안한 것처럼 :

검색과 같은 같은 변경 DOM의 속성 checked, selected또는 disabled사용, 폼 요소의 상태 .prop () 방법.


3
첫 번째 코드는 확인란의 값을 선택하지 않고 ""로 설정합니다. 그리고 선택되는 옵션 태그이기 때문에 선택에 영향을 미치지 않습니다.

6
확인란 값을 제거하지 않기 위해 귀하의 답변에서 영감을 얻은 다음을 사용했습니다 $(':input').not(':button, :submit, :reset, :hidden').removeAttr('checked').removeAttr('selected').not(':checkbox, select').val('').removeAttr('value');. 기본 값을 제거합니다 (예 : value="something"확인란 또는 선택 항목에는 해당되지 않음)
Jeppe Mariager-Lam

17
라디오, 확인란 또는 선택 항목이있는 경우이 옵션을 사용하지 마십시오 (값 1). 값이 사라진 후 이상한 버그를 찾는 데 많은 시간을 낭비하게됩니다. 올바른 버전, 그 가치를 그대로 유지 : $(':input').not(':button, :submit, :reset, :hidden').removeAttr('checked').removeAttr('selected').not(':checkbox, :radio, select').val('');(Jeppe Mariager-Lam의 의견에 근거)
Konstantin Pereiaslov

8
두 번째 옵션을 피해야 할 이유가 있습니까?
rineez 2019

6
두 번째 해결책은 실제 답변입니다
abzarak

159

이것을 사용해서는 안되는 이유는 무엇입니까?

$("#form").trigger('reset');

17
@ pythonian29033 : 접근 방식을 사용하면 페이지의 모든 양식을 기본값으로 재설정합니다. 일반 개발자가 원하는 것은 아닙니다. jQuery 개발자는 셀렉터를 예제 코드에서 적절한 코드로 변경해야한다는 사실에 주목해야한다고 생각합니다.
Sk8erPeter

8
@ Sk8erPeter ID가있는 페이지에 여러 요소 form가있는 경우 잘못된 것입니다. 선택기가 form이면 맞았지만 ID 선택기 #form였습니다.
brandones

@brandones : 당신이 잘못했기 때문에 당신이 대답하고있는 것에주의를 기울여야했습니다 ... :) pythonian29033이 작성한 코드를 확인하십시오 (이전에 대답했습니다) : $("form").trigger('reset');실제로 모든 <form>요소 에서 "재설정"이벤트를 트리거합니다 . 대부분의 경우 잘못되었을 수 있습니다. 그러나 $("#form").trigger('reset');(원래 답변으로 표시) "form"id 세트가있는 요소 ( #form선택기로 도달 가능)에서만 "reset"이벤트 만 트리거합니다 . 그리고 네, 하나의 id는 한 번만 사용되어야합니다. 이것이 그들이 하나의 요소를 명백하게 식별하기 때문에 그것들을 "id"라고 부르는 이유입니다.
Sk8erPeter

61

양식 입력 필드에 비어 있지 않은 기본값이있는 경우에는 처리되지 않습니다.

작동해야 할 것

$('yourdiv').find('form')[0].reset();

첫 번째 게시물의 js 코드가 있고 여러 양식의 여러 재설정 버튼으로 각 페이지에서 작동하도록하고 싶습니다. 따라서 약간의 기여가 필요한 선택 자일뿐입니다.
tbuehlmann 2016 년

51

선택기를 사용하여 값을 비워두면 양식이 재설정되지 않고 모든 필드가 비워집니다. 재설정은 서버 측에서 양식을로드 한 후 사용자의 편집 작업 이전과 마찬가지로 양식을 작성하는 것입니다. 이름이 "username"인 입력이 있고 해당 사용자 이름이 서버 측에서 미리 채워져 있으면이 페이지의 대부분의 솔루션은 입력에서 해당 값을 삭제하고 사용자가 변경하기 전의 값으로 재설정하지 않습니다. 양식을 재설정해야하는 경우 다음을 사용하십시오.

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

양식을 재설정 할 필요는 없지만 모든 입력을 빈 값과 같은 일부 값으로 채우면 다른 주석에서 대부분의 솔루션을 사용할 수 있습니다.


29

단순하지만 매력처럼 작동합니다.

$("#form").trigger('reset'); //jquery
document.getElementById("myform").reset(); //native JS

14
필드를 지우지 않는 것을 제외하고. 그것들을 기본값으로 설정합니다.
마크 프레이저

29

누군가이 스레드를 여전히 읽고 있다면 jQuery가 아닌 일반 JavaScript를 사용하는 가장 간단한 솔루션입니다. 입력 필드가 양식 안에 있으면 간단한 JavaScript 재설정 명령이 있습니다.

document.getElementById("myform").reset();

여기에 대한 자세한 내용 : http://www.w3schools.com/jsref/met_form_reset.asp

건배!


말한대로. 초기 형태 값으로 재설정되고 값을 비우지 않습니다. 그러나 그렇습니다. 기본값으로 양식을로드하면 지워지지 않습니다. 아마도 모든 입력을
통과

21
$('form[name="myform"]')[0].reset();

17

왜 JavaScript로해야합니까?

<form>
    <!-- snip -->
    <input type="reset" value="Reset"/>
</form>

http://www.w3.org/TR/html5/the-input-element.html#attr-input-type-keywords


먼저 시도했지만 기본값으로 필드를 지우지 않습니다.

jQuery를 사용하여 수행하는 방법은 다음과 같습니다.

$('.reset').on('click', function() {
    $(this).closest('form').find('input[type=text], textarea').val('');
});

1
먼저 시도했지만 기본값으로 필드를 지우지 않습니다.
tbuehlmann 2016 년

이것에 대해 종종 JavaScript가 필요한 또 다른 이유가 있습니다. 이 양식은 전혀 "양식"이 아닐 수 있습니다. 예를 들어 양식은 실제로 Backbone.js / Ember.js / AngularJS 앱에 대한 입력 모음 일 뿐이며 데이터는 서버에 전통적인 양식으로 제출되지 않지만 JavaScript 클라이언트 측에서 엄격하게 처리해야합니다. 이와 같은 경우 재설정을 수행 할 양식이 없습니다.
John Munsch

3
.live()더 이상 사용되지 않으며 느리거나 불필요합니다. .bind()또는을 사용할 수 있습니다 .on().
Kevin Beal

14

유형에 관계없이 모든 입력 상자를 비우려면 1 분 정도 걸립니다.

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

12

양식을 재설정하는 가장 쉬운 트릭이 있습니다.

jQuery("#review-form")[0].reset();

또는

$("#review-form").get().reset();

12

Javascript를 사용하면이 구문으로 간단하게 수행 할 수 있습니다 getElementById("your-form-id").reset();

이 방법으로 reset 함수를 호출하여 jquery를 사용할 수도 있습니다 $('#your-form-id')[0].reset();

잊지 마세요 [0]. 다음과 같은 경우 다음과 같은 오류가 발생합니다

TypeError : $ (...). reset은 함수가 아닙니다

JQuery는 또한 사용할 수있는 이벤트를 제공합니다

$ ( '# form_id'). trigger ( "reset");

시도하고 작동합니다.

참고 : 이러한 방법은 페이지로드시 서버에서 설정 한 초기 값으로 만 양식을 재설정합니다. 이는 임의 변경을 수행하기 전에 입력 값 'set value'에 입력이 설정된 경우 reset 메소드가 호출 된 후 필드가 동일한 값으로 재설정됨을 의미합니다.

그것이 도움이되기를 바랍니다.


7
$('#editPOIForm').each(function(){ 
    this.reset();
});

양식 editPOIFormid속성은 어디에 있습니까 ?


2
이 오직 하나가 될 것입니다 #editPOIForm그래서 .each()방법은 이해되지 않는다. 이 ID를 여러 양식에 추가하더라도 그 중 하나만 반환합니다.
Kevin Beal

1
each ()를 사용하면 $ (this) 대신 이것을 사용하여 기본 DOM 객체를 얻고 reset ()을 호출 할 수 있습니다. 모든 것을 지우는 대신 기본값으로 재설정한다고 가정하면 좋은 해결책입니다.
Dave

@Dave 그냥 사용할 수도 있습니다$('#editPOIForm').get(0).reset();
Thomas Daugaard

2
@ThomasDaugaard : get (0) 또는 단순히 $ ( '# editPOIForm') [0]을 사용하는 경우 $ ( '# editPOIForm')이 요소와 일치하지 않으면 스크립트 오류가 발생하지만 each ()는 실패합니다. 오류. 따라서 오류 처리가 진행되는 한 우선 순위에 달려 있다고 생각합니다.
Dave


6

테스트 및 검증 된 코드 :

  $( document ).ready(function() {
    $('#messageForm').submit(function(e){
       e.preventDefault();
    });
    $('#send').click(function(e){
      $("#messageForm")[0].reset();
    });
  });

자바 스크립트가 포함되어 $(document).ready있어야하며 논리와 함께 있어야합니다.


5

가장 쉽고 최상의 솔루션은
$("#form")[0].reset();

여기서 사용하지 마십시오-
$(this)[0].reset();


약간의 경고 : 입력에 대한 기본값이있는 경우 서버 렌더링을 말한 다음 form.reset();해당 값으로 재설정하고 입력을 지우지 않습니다.
Evil_Bengt

4

평균 시간 드롭 다운 상자에서 필드를 지우고 accountType을 제외한 경우 '전체'로 재설정됩니다. 나머지 필드는 빈 즉 텍스트 상자로 재설정해야합니다.이 방법은 지우기에 사용됩니다. 우리의 요구 사항으로 특정 필드.

 $(':input').not('#accountType').each( function() {

    if(this.type=='text' || this.type=='textarea'){
             this.value = '';
       }
    else if(this.type=='radio' || this.type=='checkbox'){
         this.checked=false;
      }
         else if(this.type=='select-one' || this.type=='select-multiple'){
              this.value ='All';
     }
 });

가장 완전한 답변. 감사.
RationalRabbit

한 가지 질문 : 버튼 클릭이 아닌 프로그래밍 방식 으로이 작업을 수행하는 경우 어떻게 특정 양식으로 지시합니까?
RationalRabbit


3

jQuery로 일반 재설정 기능을 호출하려는 경우이 코드를 사용하십시오.

setTimeout("reset_form()",2000);

그리고 문서 준비 에이 기능을 사이트 jQuery 작성

<script>
function reset_form()
{
    var fm=document.getElementById('form1');
    fm.reset();
}
</script>

3

여러분 중 일부는 라디오 등이 기본 "체크 된"상태를 지운다 고 불평하고 있습니다. : radio, : checkbox 선택기를 .not에 추가하면 문제가 해결됩니다.

다른 재설정 기능을 모두 사용할 수 없으면이 기능이 작동합니다.

  • ngen의 답변에서 적응

    function form_reset(formID){
        $(':input','#'+formID)
        .not(':button',':submit',':reset',':hidden',':radio',':checkbox')
        .val('');
    }

2
@using (Ajax.BeginForm("Create", "AcceptanceQualityDefect", new AjaxOptions()
{
    OnSuccess = "ClearInput",
    HttpMethod = "Post",
    UpdateTargetId = "defect-list",
    InsertionMode = InsertionMode.Replace
}, new { @id = "frmID" })) 
  1. frmID 양식의 식별
  2. OnSuccess작업의 이름은 " ClearInput"

    <script type="text/javascript">
        function ClearInput() {
            //call action for render create view
            $("#frmID").get(0).reset();
        }
    </script>
  3. 이 두 가지를 모두 수행하면 작동을 멈출 수 없습니다 ...


1

다음 코드는 모든 양식을 지우고 필드는 비어 있습니다. 페이지에 둘 이상의 양식이있는 경우 특정 양식 만 지우려면 양식의 ID 또는 클래스를 언급하십시오.

$("body").find('form').find('input,  textarea').val('');

0

accountType을 제외한 모든 필드를 지우려면 다음을 사용하십시오.

$q(':input','#myform').not('#accountType').val('').removeAttr('checked').removeAttr('selected');

1
라디오 버튼에있는 확인란의 값을 잃고 싶지는 않지만 선택을 해제하면 좋은 해결책이 아닙니다.
Frankey

0

여기와 관련 SO 질문에 표시된 코드는 불완전한 것으로 보입니다.

양식을 재설정한다는 것은 HTML에서 원래 값을 설정하는 것을 의미하므로 위의 코드를 기반으로하고있는 작은 프로젝트를 위해 이것을 결합했습니다.

            $(':input', this)
                .not(':button, :submit, :reset, :hidden')
                .each(function(i,e) {
                    $(e).val($(e).attr('value') || '')
                        .prop('checked',  false)
                        .prop('selected', false)
                })

            $('option[selected]', this).prop('selected', true)
            $('input[checked]',   this).prop('checked',  true)
            $('textarea',         this).each(function(i,e) { $(e).val($(e).html()) })

누락 된 것이 있거나 개선 될 수있는 경우 알려주십시오.


0

위의 어느 것도 페이지가 IHttpHandler 요청 처리 (captcha)를 포함하는 웹 사용자 정의 컨트롤에 대한 호출을 포함하는 간단한 경우에는 작동하지 않습니다. 이미지 처리를 위해 requsrt를 보낸 후 아래 코드는 양식의 필드를 지우지 않습니다 (HttpHandler 요청을 보내기 전에) 모든 것이 올바르게 작동합니다.

<input type="reset"  value="ClearAllFields" onclick="ClearContact()" />

 <script type="text/javascript">
       function ClearContact() {
           ("form :text").val("");
       }
    </script>

0

범용 jQuery 플러그인을 작성했습니다.

/**
 * Resets any input field or form
 */
$.fn.uReset = function () {
    return this.filter('form, :input').each(function () {
        var input = $(this);
        
        // Reset the form.
        if (input.is('form')) {
            input[0].reset();
            return;
        }

        // Reset any form field.
        if (input.is(':radio, :checkbox')) {
            input.prop('checked', this.defaultChecked);
        } else if (input.is('select')) {
            input.find('option').each(function () {
                $(this).prop('selected', this.defaultSelected);
            });
        } else if (this.defaultValue) {
            input.val(this.defaultValue);
        } else {
            console.log('Cannot reset to default value');
        }
    });
};

$(function () {
    // Test jQuery plugin.
    $('button').click(function (e) {
        e.preventDefault();
        
        var button = $(this),
            inputType = button.val(),
            form = button.closest('form');
        
        if (inputType === 'form') {
            form.uReset()
        } else {
            $('input[type=' + inputType + '], ' + inputType, form).uReset();
        }
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<h3>Form</h3>
<form>
    <input type="text" value="default"/><br /><br />
    Ch 1 (default checked) <input type="checkbox" name="color" value="1" checked="checked" /><br />
    Ch 2 <input type="checkbox" name="color" value="2" /><br />
    Ch 3 (default checked) <input type="checkbox" name="color" value="3" checked="checked" /><br /><br />
    <select name="time"><br />
        <option value="15">15</option>
        <option selected="selected" value="30">30</option>
        <option value="45">45</option>
    </select><br /><br />
    R 1 <input type="radio" name="color" value="1" /><br />
    R 2 (default checked) <input type="radio" name="color" value="2" checked="checked" /><br />
    R 3 <input type="radio" name="color" value="3" /><br /><br />
    <textarea>Default text</textarea><br /><br />
    
    <p>Play with form values and then try to reset them</p>
    
    <button type="button" value="text">Reset text input</button>
    <button type="button" value="checkbox">Reset checkboxes</button>
    <button type="button" value="select">Reset select</button>
    <button type="button" value="radio">Reset radios</button>
    <button type="button" value="textarea">Reset textarea</button>
    <button type="button" value="form">Reset the Form</button>
</form>


-2

다음과 같이 숨겨진 리셋 버튼을 추가하십시오

<input id="resetBtn" type="reset" value="reset" style="display:none" />
// Call reset buttons click event
// Similar to ClearInputs('resetBtn');
function ClearInputs(btnSelector) {
     var btn = $("#" + btnSelector);
     btn.click();
}

-4

$ ( 'form'). submit (function () {

var el = $(this);

$('<button type="reset" style="display:none; "></button>')
    .appendTo(el)
    .click()
    .remove()
;

return false;

});

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.