HTML 양식의 기본 제출 버튼은 어떻게 결정됩니까?


210

양식이 제출되었지만 다음과 같은 특정 버튼으로 제출되지 않은 경우

  • 눌러 Enter
  • HTMLFormElement.submit()JS에서 사용

브라우저는 여러 개의 제출 단추 중 하나를 눌렀을 때 사용할 단추를 어떻게 결정해야합니까?

이것은 두 가지 수준에서 중요합니다.

  • onclick제출 단추에 첨부 된 이벤트 핸들러 호출
  • 웹 서버로 다시 전송 된 데이터

지금까지의 실험 결과는 다음과 같습니다.

  • Enter, Firefox, Opera 및 Safari를 누를 때 양식의 첫 번째 제출 단추를 사용하십시오.
  • 를 누르면 EnterIE는 첫 번째 제출 버튼을 사용하거나 알아낼 수없는 조건에 따라 전혀 사용하지 않습니다.
  • 이 모든 브라우저는 JS 제출에 전혀 사용하지 않습니다.

표준은 무엇을 말합니까?

도움이된다면 여기에 내 테스트 코드가 있습니다 (PHP는 내 질문 자체가 아닌 테스트 방법에만 관련이 있습니다)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
</head>

<body>

<h1>Get</h1>
<dl>
<?php foreach ($_GET as $k => $v) echo "<dt>$k</dt><dd>$v</dd>"; ?>
</dl>

<h1>Post</h1>
<dl>
<?php foreach ($_POST as $k => $v) echo "<dt>$k</dt><dd>$v</dd>"; ?>
</dl>

<form name="theForm" method="<?php echo isset($_GET['method']) ? $_GET['method'] : 'get'; ?>" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>">
    <input type="text" name="method" />
    <input type="submit" name="action" value="Button 1" onclick="alert('Button 1'); return true" />
    <input type="text" name="stuff" />
    <input type="submit" name="action" value="Button 2" onclick="alert('Button 2'); return true" />
    <input type="button" value="submit" onclick="document.theForm.submit();" />
</form>

</body></html>

답변:


115

당신은 자바 스크립트 (예를 통해 양식을 제출하는 경우 formElement.submit()또는 아무것도에 해당), 다음 아무도 의이 버튼을 성공적으로 간주되며 그 값이 하나도 제출 된 데이터에 포함되지 않습니다 제출하지 않습니다. (이를 사용하여 양식을 제출하면 submitElement.click()참조가있는 제출이 활성화 된 것으로 간주됩니다. 제출 버튼이 모호하지 않기 때문에 실제로 귀하의 질문에 해당되지는 않습니다.하지만 포함시킬 것이라고 생각했습니다. 첫 번째 부분을 읽고 JS 양식 제출을 통해 제출 버튼을 성공적으로 만드는 방법을 궁금해하는 사람들을 위해. 물론 양식의 onsubmit 핸들러는 여전히 이런 식으로 실행되지만 반면 form.submit()에 물고기의 다른 주전자 는 아닙니다 .)

텍스트가 아닌 필드에서 Enter 키를 눌러 양식을 제출하면 실제로는 사용자 에이전트가 원하는 것을 결정합니다. 사양 (다음 명확하게 사용되는 특정 제출 버튼으로 아무 문제가 없다, 만약 당신이 탭 버튼에 공간 또는 무엇이든을 사용하여 활성화)를 텍스트 입력 필드에 키 동안 입력 사용하여 양식 제출에 대한 아무 말도하지 않습니다. 제출 버튼이 활성화 될 때 양식을 제출해야한다는 것은 텍스트 입력과 같이 Enter 키를 누르는 것만으로도 양식을 제출할 필요는 없습니다.

Internet Explorer는 소스에서 첫 번째로 나타나는 제출 단추를 선택한다고 생각합니다. Firefox와 Opera는 tabindex가 가장 낮은 버튼을 선택하고 다른 것이 정의되어 있지 않으면 처음으로 정의 된 것으로 되돌아갑니다. 제출에 기본값이 아닌 속성 IIRC가 있는지 여부와 관련하여 몇 가지 복잡한 문제가 있습니다.

여기서 해결해야 할 점은 여기서 일어나는 일에 대한 정의 된 표준이 없으며, 전적으로 브라우저의 책임에 달려 있다는 것입니다. 가능한 모든 작업에서 가능한 한 특정 행동에 의존하지 않도록하십시오. 정말로 알아야 할 경우 다양한 브라우저 버전의 동작을 찾을 수 있지만 잠시 후 다시 조사했을 때 상당히 복잡한 조건이 있었으며 (물론 새 브라우저 버전으로 변경 될 수 있음) 조언합니다. 가능하면 피하십시오!


1
제 2 부 : 내 기본 질문은 "브라우저가 제출 제어를 지정하지 않고 양식을 제출할 수있는 방법을 제공하는 경우 ..."의 효과에 어떤 사양이 있는지 여부입니다. 그러나 나는 그렇지 않다는 다윗의 대답에서 수집합니다. IE에 대한 나의 요점은 때때로 Enter를 누르면 양식을 제출하고 제출 버튼을 설정하지 않는다는 것입니다. 결과적으로 동일한 스크립트에 여러 양식을 제출하는 경우 제출 단추를 사용하여 양식을 구별 할 수 없습니다. 이것은 내가 작업중 인 프로젝트에서 나타났습니다.
스튜어트

1
매우 유용한 첫 번째 단락 괄호 섹션-감사합니다.
rbassett

63

HTML 4는 그것을 명시 적으로 만들지 않습니다. 현재 HTML5 작업 초안 은 첫 번째 제출 단추가 기본값이어야 함을 지정합니다 .

form요소의 기본 버튼은 첫 번째 단추를 제출나무 위해서는형태 소유자form요소입니다.

사용자 에이전트가 사용자가 양식을 암시 적으로 제출할 수 있도록 지원하는 경우 (예를 들어, 텍스트 필드에 포커스가있는 동안 "enter"키를 누르는 양식이 암시 적으로 양식을 제출하는 경우) 기본 단추활성화 된 양식이있는 양식에 대해 수행 이 동작으로 인해 사용자 에이전트 는 해당 기본 버튼 에서 합성 클릭 활성화 단계실행 해야 합니다 .


자, 그것이해야 할 일입니다. 사용해도 되나요?
Pacerier

HTML5에서 "암시 적 제출"을 보게되어 기쁩니다.
클린트 Pachl

61

Andrezj는 거의 문제가 없었지만 여기에 쉬운 크로스 브라우저 솔루션이 있습니다.

다음과 같은 양식을 작성하십시오.

<form>
    <input/>
    <button type="submit" value="some non-default action"/>
    <button type="submit" value="another non-default action"/>
    <button type="submit" value="yet another non-default action"/>

    <button type="submit" value="default action"/>
</form>

그리고 이것을 리팩토링하십시오 :

<form>
    <input/>

    <button style="overflow: visible !important; height: 0 !important; width: 0 !important; margin: 0 !important; border: 0 !important; padding: 0 !important; display: block !important;" type="submit" value="default action"/>

    <button type="submit" value="some non-default action"/>
    <button type="submit" value="another non-default action"/>
    <button type="submit" value="yet another non-default action"/>
    <button type="submit" value="still another non-default action"/>

    <button type="submit" value="default action"/>
</form>

W3C 사양에는 여러 제출 단추가 유효하지만 사용자 에이전트가 처리해야하는 방법에 대한 지침은 생략되어 있으므로 브라우저 제조업체는 적절한대로 구현해야합니다. 양식에 첫 번째 제출 버튼을 제출하거나 현재 포커스가있는 양식 필드 다음에 다음 제출 버튼을 제출하는 것으로 나타났습니다.

불행히도 단순히 표시 스타일을 추가하는 것 : none; W3C 사양은 숨겨진 요소가 사용자 상호 작용에서 제외되어야 함을 나타내므로 작동하지 않습니다. 그래서 대신에 그것을 평범한 곳에 숨기십시오!

위는 제가 생산에 투입 한 솔루션의 예입니다. Enter 키를 누르면 기본값 이외의 다른 값이 존재하고 DOM의 기본 제출 단추 앞에있는 경우에도 기본 양식 제출이 예상대로 작동합니다. 자바 스크립트 핸들러를 피하면서 명시적인 사용자 입력과 마우스 / 키보드 상호 작용에 대한 보너스.

참고 : 양식을 탭하면 시각적 요소에 대한 초점이 표시되지 않지만 여전히 보이지 않는 버튼이 선택됩니다. 이 문제를 피하려면 간단히 tabindex 속성을 설정하고 보이지 않는 제출 단추에서 tabindex 속성을 생략하십시오. 이러한 스타일을 중요로 승격시키는 것이 적절하지 않은 것처럼 보일 수 있지만 프레임 워크 또는 기존 버튼 스타일이이 수정을 방해하지 않아야합니다 . 또한 인라인 스타일은 형식이 좋지 않지만 프로덕션 코드를 작성하지 않고 개념을 입증하고 있습니다.


5
감사. 디스플레이 에서 우연히 발견 되었습니다. 문제도 없습니다 . 버튼을 최소화하는 대신 버튼으로 페이지를 넘겨서 페이지 밖으로 이동할 수도 있습니다 <div style="position: fixed; left: -1000px; top: -1000px />. 한 가지 더 염려 할 사항 : CSS를 사용하여 페이지 흐름에서 버튼을 최소화하거나 멀리 이동하면 WAI 문제가 발생할 수 있습니다. 화면 판독기에 여전히 기본 버튼이 표시되기 때문입니다.
Stefan Haberl

2
자세한 답변은 @James 감사합니다.
Nathan

1
이것은 나를 위해 일했습니다. 감사합니다. 버튼 테두리에 이것을 추가해야했습니다. 그것을
완전히 해체

4
숨겨진 버튼의 tabindex 속성을 -1
tvanc

2
그게 뭐야 <input/>?
Sz.

16

누군가가 jQuery로 그것을 원한다면이 게시물이 도움이 될 것이라고 생각합니다.

http://greatwebguy.com/programming/dom/default-html-button-submit-on-enter-with-jquery/

기본 솔루션은 다음과 같습니다.

$(function() {
    $("form input").keypress(function (e) {
    if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
        $('input[type=submit].default').click();
        return false;
    } else {
        return true;
    }
    });
});

그리고 내가 좋아하는 또 다른 것은 :

jQuery(document).ready(function() {
$("form input, form select").live('keypress', function (e) {
if ($(this).parents('form').find('button[type=submit].default, input[type=submit].default').length <= 0)
return true;

if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
$(this).parents('form').find('button[type=submit].default, input[type=submit].default').click();
return false;
} else {
return true;
}
});
}); 

jQuery.Event 에는 항상 .wich속성이 있습니다. 또한 DOM .keyCode(또는 .charCode그 문제)으로 돌아갈 필요가 없습니다 .
Arjan

여기서 jQuery와 관련된 또 다른 문제는 불필요한 이중 쿼리입니다. 추가로 true를 반환 할 필요가 없으므로 jQuery 버전은 Arjan이 조언 한 통합 축소에 대해 명확하고 부족합니다.
soletan

키 누르기 대신 키 다운을 사용하고 (키업 대기는 피함) e.preventDefault();"실제"기본 버튼이 실행되지 않도록이 기능의 시작 부분에 추가 했습니다. 정말 잘 작동합니다.
Matt Roy

6

11 개의 제출 버튼이있는 양식이 있었고 사용자가 Enter 키를 누를 때 항상 첫 번째 제출 버튼을 사용합니다. 다른 곳에서 폼에 제출 단추를 두 개 이상 갖는 것은 좋지 않은 아이디어 (나쁜 습관)가 아니며 이것을 수행하는 가장 좋은 방법은 폼의 유일한 제출 단추와 같이 기본적으로 원하는 단추를 사용하는 것입니다. 다른 버튼은 "TYPE = BUTTON"으로 만들어야하고 Javascript에서 자체 제출 루틴을 호출하는 onClick 이벤트가 추가되어야합니다. 이 같은 :-

<SCRIPT Language="JavaScript">
function validform()
{
  // do whatever you need to validate the form, and return true or false accordingly
}

function mjsubmit()
{
  if (validform()) { document.form1.submit(); return true;}
  return false;
}
</SCRIPT>
<INPUT TYPE=BUTTON NAME="button1" VALUE="button1" onClick="document.form1.submitvalue='button1'; return mjsubmit();">
<INPUT TYPE=BUTTON NAME="button2" VALUE="button2" onClick="document.form1.submitvalue='button2'; return mjsubmit();">
<INPUT TYPE=SUBMIT NAME="button3" VALUE="button3" onClick="document.form1.submitvalue='button3'; return validform();">
<INPUT TYPE=BUTTON NAME="button4" VALUE="button4" onClick="document.form1.submitvalue='button4'; return mjsubmit();">

여기서는 button3이 기본값이며 다른 버튼으로 프로그래밍 방식으로 양식을 제출하더라도 mjsubmit 루틴이이를 검증합니다. HTH.


19
나쁜 생각. JS가 비활성화 된 상태에서는 양식이 작동하지 않습니다. JS는 눈에 거슬리지 않게 사용해야합니다.
BalusC

7
기본적으로 JS가 꺼져있는 브라우저는 거의 없으며 iPod의 브라우저도 있습니다! 내가 인용 한 양식에서 JS off는 그것을 쓸모 없게 만들 것입니다! JS 실행에 많은 경첩이 있습니다.
graphic

7
기본적으로 꺼져 있는지 여부에 관계없이 JS를 비활성화 한 사람들은 이와 같은 바보 같은 작은 걸림돌을 피하기 위해 전원을 켤 필요가 없습니다.
Stewart

2
11 개의 제출 버튼이있는 양식에는 어떤 것이 있습니까? ( 호기심 )

2
눈에 잘 띄지 않는 Javascript를 검증하는 가장 큰 이유는 눈에 잘 띄지 않는 Javascript가 까다로운 경향이 있기 때문입니다. 나는 내가 생각하는 것을 어떻게 검증 할 수 있는지 잘 모르겠지만, JS에 의존하는 페이지를 볼 때 DOM으로 까다로운 작업을 수행하고 서버에서 의도하지 않은 작업을 수행 할 수 있다고 내기하고 있습니다.
사만다 브랜 햄

6

이제 다음을 사용하여 해결할 수 있습니다 flexbox.

HTML

<form>
    <h1>My Form</h1>
    <label for="text">Input:</label>
    <input type="text" name="text" id="text"/>

    <!-- Put the elements in reverse order -->
    <div class="form-actions">
        <button>Ok</button> <!-- our default action is first -->
        <button>Cancel</button>
    </div>
</form>

CSS

.form-actions {
    display: flex;
    flex-direction: row-reverse; /* reverse the elements inside */
}

설명
flex 상자 display: flex를 사용하면 CSS 규칙을 사용하여 사용하는 컨테이너의 요소 순서를 반대로 바꿀 수 있습니다 flex-direction: row-reverse. CSS 나 숨겨진 요소가 필요하지 않습니다. flexbox를 지원하지 않는 구형 브라우저의 경우 여전히 실행 가능한 솔루션을 얻지 만 요소는 바뀌지 않습니다.

데모
http://codepen.io/Godwin/pen/rLVKjm


2

다른 페이지로 제출을 리디렉션 한 중간에 제출 버튼이 있었기 때문에 같은 질문으로 고생했습니다.

<button type="submit" onclick="this.form.action = '#another_page'">More</button>

사용자가 Enter 키를 누르면 다른 제출 단추 대신이 단추가 클릭되었습니다.

그래서 여러 제출 버튼과 다른 가시성 옵션을 사용하여 from을 작성하고 어떤 버튼을 클릭했는지 onclick 이벤트 경고를 작성하여 기본 테스트를 수행했습니다. https://jsfiddle.net/aqfy51om/1/

테스트에 사용한 브라우저 및 OS :

WINDOWS

  • 구글 크롬 43 (c'mon google : D)
  • 모질라 파이어 폭스 38
  • 인터넷 익스플로러 11
  • 오페라 30.0

OSX

  • 구글 크롬 43
  • 사파리 7.1.6

이 브라우저의 대부분은 "숨겨진"컨테이너 안에 "표시"되는 세 번째 버튼을 클릭 한 IE 및 Safari 실행 옵션이 적용된 가시성 옵션에도 불구하고 첫 번째 버튼 을 클릭했습니다.

<div style="width: 0; height: 0; overflow: hidden;">
    <button type="submit" class="btn btn-default" onclick="alert('Hidden submit button #3 was clicked');">Hidden submit button #3</button>
</div>

그래서 내가 사용하려고하는 내 제안은 다음과 같습니다.

양식에 다른 의미의 제출 단추가 여러 개있는 경우 양식 시작 부분에 기본 조치가있는 제출 단추를 포함 시키십시오.

  1. 완전히 보이는
  2. 용기에 싸서 style="width: 0; height: 0; overflow: hidden;"

편집 또 다른 옵션은 버튼을 오프셋하는 것입니다 (여전히 from의 시작 부분) style="position: absolute; left: -9999px; top: -9999px;", IE에서 작동했지만 시도해 볼 수 있습니다.


1

당신의 의견에서 :

결과적으로 동일한 스크립트에 여러 양식을 제출하는 경우 제출 단추를 사용하여 양식을 구별 할 수 없습니다.

<input type="hidden" value="form_name" />각 양식 에을 넣습니다.

자바 스크립트로 제출하는 경우 : 양식에 이벤트 제출을 추가하고 버튼에 이벤트를 클릭하지 마십시오. 숙련 된 사용자는 마우스를 자주 만지지 않습니다.


실제로, 그러나이 질문을 제기합니다 : stackoverflow.com/questions/541869/…
Stewart

1

단일 양식에 여러 제출 단추가 있고 사용자가 Enter 키를 눌러 텍스트 필드에서 양식을 제출하면이 코드는 키 누름 이벤트에서 양식의 제출 이벤트를 호출하여 기본 기능을 대체합니다. 그 코드는 다음과 같습니다.

$('form input').keypress(function(e){

    if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)){ $(e.target).closest('form').submit(); return false; }
    else return true;

});

간단하고 문제 해결
toddmo

1

jquery와 같이 첫 번째 버튼 Enter 가 표시되는지 여부에 관계없이 첫 번째 버튼으로 항상 이동하는 것이 이상 show/hide()합니다. 속성을 추가하면 .attr('disabled', 'disabled')제출 버튼을 완전히받지 못합니다. 예를 들어 레코드 대화 상자에서 삽입 / 편집 + 삭제 버튼 가시성을 조정할 때 문제가 있습니다. 나는 덜 hackish 간단한 배치의 발견 편집을 앞에 삽입

<button type="submit" name="action" value="update">Update</button>
<button type="submit" name="action" value="insert">Insert</button>
<button type="submit" name="action" value="delete">Delete</button>

자바 스크립트 코드를 사용하십시오.

$("#formId button[type='submit'][name='action'][value!='insert']").hide().attr('disabled', 'disabled');
$("#formId button[type='submit'][name='action'][value='insert']").show().removeAttr('disabled');

0

내 레시피 :

<form>
<input type=hidden name=action value=login><!-- the magic! -->

<input type=text name=email>
<input type=text name=password>

<input type=submit name=action value=login>
<input type=submit name=action value="forgot password">
</form>

버튼을 클릭하지 않으면 기본 숨겨진 필드를 보냅니다.

클릭하면 선호도가 있으며 값이 전달됩니다.


2
그러나이 행동은 표준에 의해 규정되어 있습니까? 그리고 브라우저가 올바르게 구현하도록 신뢰할 수 있습니까?
스튜어트

좋은 질문. 나는 그것을 모든 A 브라우저에서 작동하도록 테스트했습니다 (yui 브라우저 매트릭스에서). (표준이 지정하는 것에 관계없이) 실제 생활에서 얻을 수있는 가장
consitent입니다

@yellowandred 어떻게됩니까? 나중에 볼 것입니다
gcb

1
내 실수로 {type = "hidden"}을 변경했는데 동일한 'name'값을 보지 못했습니다.
Yellow and Red

IE11 또는 Fx30에서는 작동하지 않습니다. 값은 항상 숨겨진 값으로 설정됩니다.
Jamie Kitson 2018 년

0

내가 사용한 또 다른 솔루션은 양식에 하나의 버튼 만 있고 다른 버튼은 가짜입니다.

예를 들면 다음과 같습니다.

<form>
  <label for="amount">Amount of items</label>
  <input id="amount" type="text" name="amount" />
  <span id="checkStock" class="buttonish">Check stock</span>
  <button type="submit" name="action" value="order">Place order</button>
</form>

그런 다음 span 요소의 스타일을 버튼처럼 보이게합니다. JS 리스너는 범위를 관찰하고 클릭하면 원하는 작업을 수행합니다.

모든 상황에 꼭 맞지는 않지만 최소한 매우 쉽습니다.


1
JS를 비활성화 한 사용자의 대체 방법은 무엇입니까?
Stewart

JS가 비활성화 된 사용자는 인터넷을 사용할 수 없으며 오늘날처럼 간단합니다.
Christoffer Bubach

0

로부터 HTML 4 사양 :

양식에 둘 이상의 제출 단추가 포함 된 경우 활성화 된 제출 단추 만 성공합니다.

이는 제출 단추가 두 개 이상이고 활성화 된 (누르지 않은) 것이 없으면 성공할 수 없음을 의미합니다.

그리고 나는 이것이 의미가 있다고 주장합니다. 여러 개의 제출 버튼이있는 거대한 형태를 상상해보십시오. 상단에는 "이 레코드 삭제"버튼이 있으며, 많은 입력이 이어지고 하단에는 "이 레코드 업데이트"버튼이 있습니다. 양식 맨 아래의 필드에있는 동안 Enter 키를 누르면 사용자가 암시 적으로 "이 레코드 삭제"를 맨 위에서 쳤다고 의심하지 않습니다.

따라서 사용자가 버튼을 정의하지 않은 첫 번째 또는 다른 버튼을 사용하는 것은 좋지 않습니다. 그럼에도 불구하고 브라우저는 물론 그것을하고 있습니다.


-2

편집 : 죄송합니다,이 답변을 쓸 때 일반적인 의미에서 제출 버튼에 대해 생각하고있었습니다. 아래의 대답은 type="submit"하나만 남겨 type="submit"두고 다른 하나는 로 변경하기 때문에 여러 버튼 에 관한 것이 아닙니다 type="button". 나는 type형태를 바꿀 수있는 누군가를 돕기 위해 여기에 답을 남겨 둡니다 .

Enter 키를 눌렀을 때 어떤 버튼을 눌렀는지 확인하려면 type="submit"버튼으로 표시하고 다른 버튼은로 표시합니다 type="button". 예를 들면 다음과 같습니다.

<input type="button" value="Cancel" />
<input type="submit" value="Submit" />

"button"유형은 양식을 제출하지 않습니다. 클라이언트 측 스크립트를 트리거하는 데만 사용됩니다.
스튜어트

정확하게 Enter 키를 누르면 브라우저가이를 건너 뛰고 "submit"유형의 브라우저가 실행됩니다. 예를 들어 "button"유형의 것을 사용하여 클릭시 다른 작업을 수행 할 수 있습니다. 부정적인 투표를 제거하십시오.
Jesús Carrera

문제는 여러 제출 버튼 에 관한 것 입니다.
스튜어트

내 예제는 여러 제출 버튼에 완전히 유효합니다. "submit"유형의 브라우저는 브라우저가 눌려진 것으로 작동하도록 결정한 것입니다 (이것이 질문에 관한 것임). 그런 다음 다른 버튼으로 제출 버튼으로 사용할 수 있으며 예제에서 사용하는 onClick 이벤트와 같은 JavaScript 이벤트를 사용할 수 있습니다. 따라서 내 대답은 관련이 있으며 다운 투표를받을 자격이 없습니다. 제거하십시오.
Jesús Carrera

1
요점 중 하나만 "submit"을 입력하고 JavaScript를 사용하여 다른 버튼을 구현하여 모호성을 제거 할 것을 제안하는 경우, 이것은 그래픽의 응답의 복제본이므로 이미 나쁜 생각으로 기각되었습니다.
스튜어트
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.