.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.