.reset () 메소드와 함께 jQuery를 사용하여 양식을 재설정하는 방법


270

재설정 버튼을 클릭하면 양식을 재설정 할 수있는 작업 코드가 있습니다. 그러나 코드가 길어지면 더 이상 작동하지 않는다는 것을 알고 있습니다.

 <div id="labels">
        <table class="config">
            <thead>
                <tr>
                    <th colspan="4"; style= "padding-bottom: 20px; color:#6666FF; text-align:left; font-size: 1.5em">Control Buttons Configuration</th>
                </tr>
                <tr>
                    <th>Index</th>
                    <th>Switch</th>
                    <th>Response Number</th>
                    <th>Description</th>
                </tr>
            </thead>
            <tbody>

                <form id="configform" name= "input" action="#" method="get">
                <tr><td style="text-align: center">1</td>
                    <td><img src= "static/switch.png" height="100px" width="108px"></td>
                    <td id="small"><input style="background: white; color: black;" type="text" value="" id="number_one"></td>
                    <td><input style="background: white; color: black;" type="text"  id="label_one"></td>
                </tr>
                <tr>
                    <td style="text-align: center">2</td>
                    <td><img src= "static/switch.png" height="100px" width="108px"></td>
                    <td id="small"><input style="background: white; color: black;" type="text" id = "number_two" value=""></td>
                    <td><input style="background: white; color: black;" type="text"  id = "label_two"></td>
                </tr>
                <tr>
                    <td style="text-align: center">3</td>
                    <td><img src= "static/switch.png" height="100px" width="108px"></td>
                    <td id="small"><input style="background: white; color: black;" type="text" id="number_three" value=""></td>
                    <td><input style="background: white; color: black;" type="text" id="label_three"></td>
                </tr>
                <tr>
                    <td style="text-align: center">4</td>
                    <td><img src= "static/switch.png" height="100px" width="108px"></td>
                    <td id="small"><input style="background: white; color: black;" type="text" id="number_four" value=""></td>
                    <td><input style="background: white; color: black;" type="text" id="label_three"></td>
                </tr>
                <tr>
                    <td></td>
                    <td><input type="submit" id="configsubmit" value="Submit"></td>
                </tr>
                <tr>
                    <td><input type="reset" id="configreset" value="Reset"></td>
                </tr>

                </form>
            </tbody>
        </table>

    </div>

그리고 내 jQuery :

 $('#configreset').click(function(){
            $('#configform')[0].reset();
 });

.reset()메소드가 작동 하기 위해 코드에 포함시켜야 할 소스가 있습니까? 이전에는 다음을 사용하고있었습니다.

<script src="static/jquery.min.js">
</script>
<script src="static/jquery.mobile-1.2.0.min.js">
</script>

그 .reset()방법은 효과가있었습니다.

현재 사용하고 있습니다

<script src="static/jquery-1.9.1.min.js"></script>      
<script src="static/jquery-migrate-1.1.1.min.js"></script>
<script src="static/jquery.mobile-1.3.1.min.js"></script>

아마도 그 이유 중 하나 일 수 있습니까?


작동하지 않는 예를 들어 줄 수 있습니까? 필드가 재설정됩니까?
— Arun P Johny

그것의이 같은 있지만, 여기에서 잘 작동되는 jsfiddle.net/chJ8B을 ? 때문에 스크립트의 다른 부분으로 아마 :(하지만 난 단 한 형태가
— yvonnezoe

내 질문은 필드가 재설정되지 않았는지 / 일부 작동하지 않는지 여부입니다.
— Arun P Johny

13
HTML이 유효하지 않습니다 . 폼은 TBODY 요소의 자식이 될 수 없으며 TR은 FORM 요소의 자식이 될 수 없습니다. 양식 태그를 테이블 외부에 넣습니다 (예 : 테이블을 양식에 넣습니다). 폼이 테이블 외부로 이동되었을 가능성이 있지만 폼 컨트롤이 셀에 남아 있으므로 더 이상 폼에 없습니다.
— RobG

@RobG : O 좋은 지적입니다! 나는 그것을 시도 할 것이다. 감사합니다! 내가 바이올린 링크를 얻기 위해 여기로 돌아 오지 않으면이 유용한 의견을 놓칠 수 있습니다 : s
— yvonnezoe

답변:


463

당신은 trigger () 참조 링크를 사용해 볼 수 있습니다

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

2
단순히 마법과 직선! 공유해 주셔서 감사합니다.
— Ajay Kumar

친애하는 유권자 여러분, 귀하의 다운 투표에 대한 이유를 알려 주시면 답변을 개선 할 수 있습니다.
— SagarPPanchal

$ ( '. profile_img_form'). trigger ( 'reset');을 사용하고 있습니다. 내 양식에 class_name이라는 profile_img_form을 추가 한 다음 호출했습니다. 그것은 내 양식을 재설정하지 않고 Uncaught SyntaxError와 같은 오류 메시지를 반환하지 않습니다 : 잘못된 정규 표현식 : /(^|\.)bs\.(?:..*\.|)fileinput(\.|$)/ : 발행물. 감사.
— Kamlesh

이 작업을해야 @Kamlesh, 난을 클릭, 당신을 위해 데모를 만들었습니다 jsfiddle.net/Lkt4eq9y/2
— SagarPPanchal

1
답변 해주셔서 감사합니다. Googling / SO'ing 시간 절약 :)
— Anjana Silva

276

http://jsfiddle.net/8zLLn/

  $('#configreset').click(function(){
        $('#configform')[0].reset();
  });

JS 바이올린에 넣으십시오. 의도 한대로 작동했습니다.

따라서 위에서 언급 한 문제 중 어느 것도 잘못이 아닙니다. 충돌하는 ID 문제가 있습니까? 클릭이 실제로 실행되고 있습니까?

편집 : (적절한 주석 처리 능력이없는 슬픈 자루이기 때문에) 코드와 직접 관련이 없습니다. 현재 사용중인 페이지의 컨텍스트에서 가져 오면 정상적으로 작동하므로 특정 jQuery / javascript 및 기여 양식 데이터가있는 것이 아니라 다른 것이어야합니다. 나는 주위에서 코드를 bisecing 시작하고 어디에서 진행되고 있는지 찾아보십시오. 내 말은, '확실히'하기 위해서, 당신이 할 수 있다고 생각합니다 ...

console.log($('#configform')[0]);

클릭 기능에서 올바른 형식을 타겟팅하는지 확인하십시오.

그리고 그것이 있다면, 여기에 나열되지 않은 것이어야합니다.

2 부 편집 : 시도 할 수있는 한 가지 (올바르게 타겟팅하지 않는 경우) 사용하는 대신 "input : reset"을 사용하는 것입니다. 실제 클릭이 타겟팅하는 대상 방화범 / 개발자 도구를 열어보세요.

console.log($('#configreset'))

무엇이 팝업되는지 확인하십시오. 우리는 거기서 갈 수 있습니다.


충돌하지 않는 ID 없음 :( 레이어별로 레이어를 선택하고 클릭이 작동하는지 확인하려고합니다
— yvonnezoe

1
흠 클릭이 작동하지 않는 것 같습니다! 제가 첨가 $('#ptest').html("clicked reset")클릭에 (함수 () {}); 그것은 "클릭 재설정"을 표시해야하지만 표시 didnt하는 곳
— yvonnezoe

질문이 있습니다. console.log를 사용할 때마다 어디서 찾아야할지 모르겠습니다. 파이썬 IDLE과 터미널을 사용하여 파이썬 스크립트를 실행하고 있습니다. 자바 스크립트가 그 안에 있습니다. 어쨌든,`alert ($ ( '# configform') [0])을 사용하면 [object HTMLFormElement]
— yvonnezoe

1
alert (JSON.stringify ($ '# configform') [0]))을 사용해보십시오. 경고는 예쁘게 인쇄되는 개체 (또는 개체에 포함 된 내용)에 대해서는 크게 신경 쓰지 않습니다. 그것은 단지 그것이 객체라는 것을 알려줍니다.
— FullOnFlatWhite 2

1
@DylanChensky jQuery의 마술은 모든 것이 세트 (배열)라는 것입니다. jQuery에서 일반 배열을 사용하는 것처럼 [0]첫 번째 요소를 선택합니다. 그러나 jQuery에서는 요소의 실제 html을 선택합니다. 따라서 [0]html을 제공하므로 jQuery가 아닌 html 메소드를 호출 할 수 있습니다 reset. 자세한 내용은 아래 @kevin의 답변을 참조하십시오.
— FullOnFlatWhite

110

이 게시물에 따르면 여기에 , jQuery를 더없는 reset()방법; 그러나 기본 JavaScript는 않습니다. 따라서 다음을 사용하여 jQuery 요소를 JavaScript 객체로 변환하십시오.

$("#formId")[0].reset()
// or
$("#formId").get(0).reset()

1
그것은 작동하고 동의합니다 .jQuery에는 reset () 메소드가 없습니다. w3school doc에서 기본 JavaScript로 수행하는 방법을 볼 수 있습니다. w3schools.com/jsref/met_form_reset.asp
— serfer2

2
양식 이 재설정 되지 않고 지워지지 않는다는 점에 유의하고 싶습니다 . 즉, 양식에 요청과 함께 전송 된 값이 있으면 해당 값이 복원됩니다.
— 수호자 1

자리 표시 자, 양식의 초기 렌더링, 양식 요소에 자리 표시 자 값이 있습니다.이 자리 표시 자에 관계 없이이 재설정 후 값이 비어 있지만 값이 공백이되므로 양식 유효성 검사 중에주의하십시오. 자리 표시 자 값이 기본값인지 확인하기 위해 일반 양식 유효성 검사를 추가했습니다.
— Ramratan Gupta

48

이것은 실제로 jQuery보다 바닐라 자바 ​​스크립트에서 더 쉬운 것들 중 하나입니다. jQuery에는 reset메소드가 없지만 HTML 양식 요소가 있으므로 다음과 같이 양식의 모든 필드를 재설정 할 수 있습니다.

document.getElementById('configform').reset();

jQuery를 통해이 작업을 수행하면 (여기 다른 답변에서 볼 수 있듯이 $('#configform')[0].reset()) [0]은를 통해 직접 얻을 수있는 것과 동일한 양식 DOM 요소를 가져옵니다 document.getElementById. 후자의 접근 방식은 더 효율적이고 간단합니다 (jQuery 접근 방식으로 인해 먼저 컬렉션을 얻은 다음 컬렉션에서 요소를 가져와야하지만 바닐라 자바 ​​스크립트에서는 요소를 직접 가져옵니다).


23

재설정 버튼에는 스크립트가 전혀 필요하지 않습니다 (또는 이름 또는 ID).

<input type="reset">

그리고 당신은 끝났습니다. 그러나 실제로 스크립트를 사용해야 하는 경우 모든 양식 컨트롤에는 해당 양식 을 참조 하는 양식 속성이 있으므로 다음을 수행 할 수 있습니다.

<input type="button" onclick="this.form.reset();">

그러나 재설정 버튼이 훨씬 나은 선택입니다.


당신은 단순히 그 라인 만 할 것입니까? OO 위의 HTML이 맞습니까?
— yvonnezoe

"작동하지 않음"을 정의하십시오. 어떤 오류가 발생합니까? 작동하지 않는 것은 무엇입니까? 재설정 버튼은 HTML 양식의 일부였으며 작동합니다.
— RobG

1
"작동하지 않음"-아무 것도 재설정하지 않으며 양식에서 변경된 내용이 없습니다.
— yvonnezoe

1
주목해야 할 것은 "재설정"이 "내 양식이 지워졌다"는 의미는 아닙니다. "재설정"의 의미가 실제로하는 것은 모든 "양식"요소를 원래의 "값"속성으로 되 돌리는 것입니다. 그것은 적어도 몇 분 동안 나를 혼란스럽게했다!
— jocull

@jocull-다른 모든 방법이 실패하면 항상 HTML 표준 의 W3C 또는 WHATWG 버전이 있습니다. ;-)
— RobG

21

마침내 문제를 해결했습니다! @RobG는 form태그와 table태그 에 대해 옳았습니다 . 태그는 테이블 외부에 배치해야합니다. 그것으로,form

<td><input type="reset" id="configreset" value="Reset"></td>

jquery 또는 다른 것이 필요하지 않습니다. 버튼을 클릭하고 tadaa ~ 전체 형태가 재설정됩니다;) 화려한!


3
일반적으로 소스 코드를 검사하여 (페이지 소스를 보지 않고 생성 된 내용을 표시하는 대신 개발자 도구 <kbd> F12 </ kbd>와 같은 것을 사용하여) 소스 코드를 검사하여 이러한 상황이 발생했는지 확인할 수 있습니다. 브라우저에 "라는 메시지가 표시form 됩니다 tbody.이 경우 입력 요소를 제외하고 태그 시작 부분에서 태그가 자동으로 닫 혔음을 표시합니다 (최소한 Chrome에서는) .
— drzaus



13

JQuery와 함수를 사용하여 .closest (요소) 과 .find을 (...) .

얻기 부모 요소와 찾고 아이 .

마지막으로 필요한 기능을 수행하십시오.

$("#form").closest('form').find("input[type=text], textarea").val("");

4
이 코드 블록이 질문에 대답 할 수 있지만 항상 그 이유에 대한 설명을 제공해야합니다.
— 사샤 울프

1
$("#form").find("input[type=text], textarea").val("");나는 이렇게했다
— Bira

11

첫 번째 줄은 양식 입력을 재설정합니다

$('form#myform').trigger("reset"); //Line1
$('form#myform select').trigger("change"); //Line2

두 번째는 select2를 재설정합니다.

선택 사항 : 다른 이벤트에 다른 유형으로 등록 된 경우이를 사용할 수 있습니다 .

$('form#myform select, form input[type=checkbox]').trigger("change"); //Line2

5

이 jQuery 재설정 기능을 사용하면 양식 필드를 빠르게 재설정 할 수 있습니다.

성공 응답을 받으면 코드 아래에서 실행하십시오.

$(selector)[0].reset();


4

다음과 같이 입력 유형 = reset with id = resetform을 추가 할 수 있습니다

<html>
<form>
<input type = 'reset' id = 'resetform' value = 'reset'/>
<!--Other items in the form can be placed here-->
</form>
</html>

그런 다음 jquery를 사용하면 다음과 같이 id = resetform 인 요소에서 .click () 함수를 사용하십시오.

<script> 
$('#resetform').click();
</script>

양식 재설정 참고 : CSS를 사용하여 id = resetform으로 재설정 버튼을 숨길 수도 있습니다.

<style>
#resetform
{
display:none;
}
</style>

그것을 더 현대적인 형태로 만들기 위해 숨기는 것을 잊지 마십시오. <입력 유형 = '재설정'id = '재설정'값 = '재설정'/ style = 'display : none;'>
— mangas

3

다음은 Jquery를 사용한 간단한 솔루션입니다. 전 세계적으로 작동합니다. 코드를 살펴보십시오.

$('document').on("click", ".clear", function(){
   $(this).closest('form').trigger("reset");
})

재설정해야하는 모든 형태의 버튼에 명확한 클래스를 추가하십시오. 예를 들면 다음과 같습니다.

<button class="button clear" type="reset">Clear</button>

3

jQuery 에는 reset()메소드 가 없습니다 . 그러나 기본 JavaScript 는 않습니다. 따라서 다음을 사용하여 jQuery 요소를 JavaScript 객체로 변환하십시오.

$("#formId")[0].reset();

$("#formId").get(0).reset();

우리는 단순히 자바 스크립트 코드를 사용할 수 있습니다

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

2
<button type="reset">Reset</reset>

내가 생각할 수있는 가장 간단한 방법은 강력합니다. 양식 태그 내에 배치하십시오.


1

다음을 사용할 수 있습니다.

@using (Html.BeginForm("MyAction", "MyController", new { area = "MyArea" }, FormMethod.Post, new { @class = "" }))
{
<div class="col-md-6">
    <div class="col-lg-3 col-md-3 col-sm-3 col-xs-12">
        @Html.LabelFor(m => m.MyData, new { @class = "col-form-label" })
    </div>
    <div class="col-lg-9 col-md-9 col-sm-9 col-xs-12">
        @Html.TextBoxFor(m => m.MyData, new { @class = "form-control" })
    </div>
</div>
<div class="col-md-6">
    <div class="">
        <button class="btn btn-primary" type="submit">Send</button>
        <button class="btn btn-danger" type="reset"> Clear</button>
    </div>
</div>
}

그런 다음 양식을 지우십시오.

    $('.btn:reset').click(function (ev) {
        ev.preventDefault();
        $(this).closest('form').find("input").each(function(i, v) {
            $(this).val("");
        });
    });

여기에는 많은 프레임 워크 관련 코드가있는 것 같습니다. SO에 대한 질문에 대답 할 때 나는 질문들이 jQuery를 제외하고 어떤 프레임 워크를 사용하고 있음을 지정하지 않았으로, 같은 일을 피하는 것이 좋습니다
— Lazerbeak12345

0

코드가 작동해야합니다. static/jquery-1.9.1.min.js존재 하는지 확인하십시오 . 또한로 되돌릴 수 static/jquery.min.js있습니다. 문제가 해결되면 문제를 정확히 지적한 것입니다.


내가 생각할 수있는 유일한 다른 문제는 동일한 ID ( configform) 를 가진 다른 양식이 있다는 것입니다 . 콘솔을 사용하여 조사해야합니다. 먼저 시도하십시오 $. Chrome을 사용하는 경우 $콘솔에 입력 하면 jQuery가로드 된 경우 상황에 맞는 목록이 활성화됩니다. 입력 $하고 return 키를 누르면 jQuery가로드되면 함수로 평가됩니다. 다음 시도하십시오 $("#configform"). 결과를 마우스 오른쪽 버튼으로 클릭하고을 선택하십시오 Reveal in Elements panel.
— ic3b3rg 12

고맙습니다 :)하지만 크롬이 없습니다. 방화범을 사용하는 것과 같은 방법입니까? (나는 그것을 설치했지만 전에는 사용하지 마십시오)
— yvonnezoe
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.