OnClick vs OnClient asp를 클릭합니다.체크박스?
asp에 대한 클라이언트 측 Javascript 처리기가 왜 그런지 아는 사람?CheckBox는 다음과 같이 OnClientClick=" 특성이 아닌 OnClick=" 특성이어야 합니다.단추?
예를 들어, 다음과 같이 작동합니다.
<asp:CheckBox runat="server" OnClick="alert(this.checked);" />
그리고 이것은 그렇지 않습니다(오류 없음).
<asp:CheckBox runat="server" OnClientClick="alert(this.checked);" />
하지만 이것은 효과가 있습니다.
<asp:Button runat="server" OnClientClick="alert('Hi');" />
그리고 이것은 그렇지 않습니다(시간 오류).
<asp:Button runat="server" OnClick="alert('hi');" />
(나는 어떤 버튼인지 알아요.OnClick은 다음을 위한 것입니다. CheckBox가 동일하게 작동하지 않는 이유가 궁금합니다.
그것은 매우 이상합니다.다음과 같은 CheckBox 문서 페이지를 확인했습니다.
<asp:CheckBox id="CheckBox1"
AutoPostBack="True|False"
Text="Label"
TextAlign="Right|Left"
Checked="True|False"
OnCheckedChanged="OnCheckedChangedMethod"
runat="server"/>
보시다시피 OnClick 또는 OnClientClick 특성이 정의되어 있지 않습니다.
이 점을 염두에 두고, 저는 이런 일이 일어나고 있다고 생각합니다.
이렇게 하면,
<asp:CheckBox runat="server" OnClick="alert(this.checked);" />
ASP.NET은 OnClick 특성을 수정하지 않고 브라우저에서 그대로 렌더링합니다.다음과 같이 렌더링됩니다.
<input type="checkbox" OnClick="alert(this.checked);" />
분명히 브라우저는 'OnClick'을 이해하고 경고를 표시할 수 있습니다.
그리고 이 시나리오에서는
<asp:CheckBox runat="server" OnClientClick="alert(this.checked);" />
다시 말하지만 ASP.NET은 OnClientClick 특성을 변경하지 않고 다음과 같이 렌더링합니다.
<input type="checkbox" OnClientClick="alert(this.checked);" />
브라우저가 OnClient를 이해하지 못하므로 클릭하면 아무 일도 일어나지 않습니다.또한 다른 속성이기 때문에 오류가 발생하지 않습니다.
당신은 렌더링된 HTML을 보고 위의 내용을 확인할 수 있습니다.
네, 이것은 전혀 직관적이지 않습니다.
그것들은 두 가지 다른 종류의 제어장치이기 때문에...
아시다시피, 웹 브라우저는 서버 측 프로그래밍에 대해 알지 못합니다.자신의 DOM과 사용하는 이벤트 모델에 대해서만 알고 있습니다.렌더링된 개체의 클릭 이벤트에 대해서도 확인할 수 있습니다.실제로 ASP.Net에서 브라우저로 전송되는 최종 마크업을 검토하여 차이점을 확인해야 합니다.
<asp:CheckBox runat="server" OnClick="alert(this.checked);" />
에 렌더링됨.
<input type="check" OnClick="alert(this.checked);" />
그리고.
<asp:CheckBox runat="server" OnClientClick="alert(this.checked);" />
에 렌더링됨.
<input type="check" OnClientClick="alert(this.checked);" />
제가 기억하는 한, DOM에서 "OnClientClick" 이벤트를 지원하는 브라우저는 없습니다.
의심스러운 경우 항상 출력이 브라우저로 전송될 때 출력 소스를 확인합니다.디버그 정보의 전 세계를 볼 수 있습니다.
당신이 옳습니다. 이것은 일관성이 없습니다.CheckBox에는 서버 측 OnClick 이벤트가 없으므로 마크업이 브라우저에 렌더링됩니다.http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.checkbox_events.aspx
Button에는 OnClick이 있지만 ASP.NET에는 OnClick 마크업의 이벤트에 대한 참조가 필요합니다.
서버 쪽을 찾아 오신 분들을 위해 OnClick
은 핸러그것은입니다.OnCheckedChanged
경고 및 메시지를 정리하던 중 VS가 이에 대해 경고하는 것을 확인했습니다. ASP(검증).Net): 'OnClick' 특성이 'CheckBox' 요소의 올바른 특성이 아닙니다.html 입력 컨트롤을 사용하여 클라이언트 측 핸들러를 지정하면 추가 스팬 태그와 두 요소를 얻을 수 없습니다.
Asp.net CheckBox 지 OnClient 클릭합니다.
를 aspjavascript에 합니다.CheckBox 서버 코드의 "Pre_Render" 또는 "Page_Load" 이벤트에 관련 속성을 추가해야 합니다.
C#:
private void Page_Load(object sender, EventArgs e)
{
SomeCheckBoxId.Attributes["onclick"] = "MyJavaScriptMethod(this);";
}
참고: 페이지 헤더에 AutoEventWireup="false"를 설정하지 마십시오.
VB:
Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
SomeCheckBoxId.Attributes("onclick") = "MyJavaScriptMethod(this);"
End Sub
다음과 같이 태그를 수행할 수 있습니다.
<asp:CheckBox runat="server" ID="ckRouteNow" Text="Send Now" OnClick="checkchanged(this)" />
호출된 JavaScript의 .checked 속성은 정확합니다...확인란의 현재 상태:
function checkchanged(obj) {
alert(obj.checked)
}
모든 확인란에 기능을 할당한 후 확인을 요청할 수 있습니다.예를 선택한 경우 확인란을 변경할 수 있습니다. 확인란이 없으면 변경할 수 있습니다.
저의 경우에도 ASP를 사용하고 있습니다.자동 포스트백=이 있는 리피터(또는 그리드) 내부의 Net 확인란True" 속성이므로 서버 측에서는 제출된 값과 현재 db에 있는 값을 비교하여 선택한 확인 값이 "yes"인 경우에만 db를 업데이트해야 합니다.
$(document).ready(function () {
$('input[type=checkbox]').click(function(){
var areYouSure = confirm('Are you sure you want make this change?');
if (areYouSure) {
$(this).prop('checked', this.checked);
} else {
$(this).prop('checked', !this.checked);
}
});
});
<asp:CheckBox ID="chk" AutoPostBack="true" onCheckedChanged="chk_SelectedIndexChanged" runat="server" Checked='<%#Eval("FinancialAid") %>' />
protected void chk_SelectedIndexChanged(Object sender, EventArgs e)
{
using (myDataContext db = new myDataDataContext())
{
CheckBox chk = (CheckBox)sender;
RepeaterItem row = (RepeaterItem) chk.NamingContainer;
var studentID = ((Label) row.FindControl("lblID")).Text;
var z = (from b in db.StudentApplicants
where b.StudentID == studentID
select b).FirstOrDefault();
if(chk != null && chk.Checked != z.FinancialAid){
z.FinancialAid = chk.Checked;
z.ModifiedDate = DateTime.Now;
db.SubmitChanges();
BindGrid();
}
gvData.DataBind();
}
}
하나의 솔루션은 JQuery를 사용하는 것입니다.
$(document).ready(
function () {
$('#mycheckboxId').click(function () {
// here the action or function to call
});
}
);
언급URL : https://stackoverflow.com/questions/1135134/onclick-vs-onclientclick-for-an-aspcheckbox
'programing' 카테고리의 다른 글
문자열에서 특정 문자 제거 (0) | 2023.06.26 |
---|---|
특정 문자로 시작해야 하는 스크립트 문자열 유형 (0) | 2023.06.26 |
일부 파일의 변경 내용을 실행 취소 (0) | 2023.06.26 |
mongoDB 설치(하위 프로세스 실패, 오류 번호 100으로 종료) (0) | 2023.06.26 |
텍스트 파일을 단일 문자열로 가져오기 (0) | 2023.06.26 |