문제

ASP.NET WebForms 및 ASP 3 (Classic ASP)에서 양식 제출 버튼을 "제출"할 수있는 문제를 발견했습니다. 아래는 렌더링 된 HTML입니다.

<input type="submit" name="Submit" value="Submit" id="Submit" />

나는 왜 또는 무슨 일이 일어 났는지 정확히 모르기 때문에 "깨진 것"이라고 말합니다. 그러나 증상은 일반적으로 제출 버튼을 누르면 때때로 아무것도하지 않았다는 것입니다. 그러나 때로는 효과가있었습니다.

사실, 나는 방금 아래 코드로 빠른 한 페이지 테스트를 구축했으며 제출이 잘 작동했습니다.

<form id="form1" runat="server">
<div>
    <asp:TextBox ID="txtTest" runat="server" />
    <asp:Button ID="Submit" runat="server" Text="Submit" />
</div>
</form>

하지만, 과거에는이 문제가 발생했으며 버튼을 바꾸면 항상 증상이 사라졌습니다.

따라서 HTML/HTTP/브라우저 전문가가 제출 버튼에서 ID = "제출"을 설정하는 이유를 알고 있습니까?

편집하다

이것 그러니 댓글 "제출"은 예약 된 키워드라고 제안하는 것 같습니다. 그러나 왜 "ID"또는 "name"이 intefere와 함께 귀속 될까요? 그리고 이것이 "예약 된"키워드가 어떻게 충돌을 일으키는 방식으로 구현됩니까?

다시 한 번 감사드립니다

도움이 되었습니까?

해결책

그만큼 form 요소에는 이름이 지정된 메소드가 있습니다 submit, 또한 멤버로서 양식 요소도 있습니다.

이름이 지정된 양식의 버튼이있는 경우 submit, 당신은 그것을 사용하여 액세스 할 수 있습니다 document.form1.submit. 그러나 그 이름은 submit 방법, 더 이상 해당 메소드에 액세스하는 방법이 없습니다. 방법을 사용하여 양식을 제출하는 경우 더 이상 작동하지 않습니다.

예를 들어, JavaScript를 사용하여 양식을 제출하는 버튼이있는 경우 작동하지 않습니다.

<input type="button" name="submit" onclick="this.form.submit();" value="try" />

버튼이 사용하려고 할 때 submit 메소드는 대신 자체에 대한 참조를 얻습니다 (버튼이 함수가 아니기 때문에 호출하려고 할 때 오류 메시지가 표시됩니다).

다른 팁

나는 당신이 JavaScript의 DOM의 예약 된 단어에서 멀리 떨어져있을 것을 촉구합니다. 당신이 정의하는 모든 것, $, 또는 당신이 실수로 과부하하고 혼란을 야기 할 수있는 예약 된 단어와 분명히 충돌하지 않을 다른 것에 "나의"를 사용하십시오.

객체에 이벤트를 바인딩 할 수 있도록 생성 된 코드-비만은 지정한 값에 따라 명명됩니다.

양식 제출에 Proble 인 경우 OnSubmit을 사용하십시오

<form id="form1" runat="server" onsubmit="this.submit()">
<div>
    <asp:TextBox ID="txtTest" runat="server" />
    <asp:Button ID="Submit" runat="server" Text="Submit" Type="submit"/>
</div>
</form>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top