onclient click이 false일 때 click이 시작되지 않도록 중지하시겠습니까?
사용할 수 있습니까?onclientclick클라이언트 사이드 체크를 수행하는 단추의 속성입니다.수표가 반환되는 경우true그리고 나서 발사합니다.onclick이벤트. 고객측 체크가 다시 발생하는 경우false해고하지 마onclick사건의
그게 가능한가요?
업데이트:
다음 두 가지 작업:
Stops the form from submitting:
OnClientClick="return false;"
Allows the form to submit:
OnClientClick="return true;"
다음 2개는 작동하지 않습니다.
// in js script tag
function mycheck() {
return false;
}
// in asp:button tag
OnClientClick="return mycheck();"
// in js script tag
function mycheck() {
return true;
}
// in asp:button tag
OnClientClick="return mycheck();"
두 번 모두 양식을 제출합니다.
왜 그런 것일까요?
추가할 항목returnOnClient 함수가 호출된 후 클릭합니다.그렇지 않으면 함수가 false를 반환하더라도 버튼이 다시 게시됩니다.
<asp:button ID="Button1" runat="server" OnClick="Button1_Click"
OnClientClick="return checkValidation()" Text="Submit" />
<script type="text/javascript">
function checkValidation() {
return confirm('Everything ok?');
}
</script>
물론이죠. 만약에.return false당신의 내부에OnClientClick그것은 어떠한 내비게이션도 일어나지 않게 할 것입니다.코드는 다음과 같습니다.
<asp:LinkButton runat="server" OnClientClick="if(!ValidatePage()) { return false;}" />
예, 가능합니다. Onclient클릭 함수 호출 사용preventDefault()
function onclientClickFun(e)
{
if(!IsValidationSuccess)
{
e.preventDefault();
}
}
OR
function onclientClickFun(e)
{
if(!IsValidationSuccess)
{
return false;
}
}
서버 페이지에서 다음 단추를 만듭니다.
var button1 = new Button();
button1.ServerClick += new EventHandler(button1_ServerClick);
button1.OnClientClick = SetJsForSaveBtn();
button1.Attributes.Add("UseSubmitBehavior", "false");
panel.Controls.Add(button1 );
//서버 코드 포함
private void saveBtn_ServerClick(object sender, EventArgs e)
{
//do something if ClientClick returns true
}
//페이지의 JS 코드를 포함합니다.
LiteralControl js = new LiteralControl();
panel.Controls.Add(js);
js.Text =@"<script type='text/javascript'>
$(document).ready(function(){
function CheckValidationOnClient(){
if(!ValidatePage()){
return false;
}
else{
return true;
}
};
});
</script> ";
private string SetJsForSaveBtn()
{
var jsfunc = @" return CheckValidationOnClient()";
return jsfunc ;
}
저도 이 문제를 접했습니다.모든 링크 버튼에 OnClientClick=return false를 입력할 필요가 없습니다.간단한 페이지를 사용하면 앵커를 사용하기 쉽고 hrefin을 채우는 asp를 피할 수 있습니다.
그러나 이것이 항상 가능한 것은 아닙니다.따라서 단순 결론은 LinkButton을 상속하고 AutoPostBack과 같은 변수를 추가하는 것입니다. false이면 출력을 html로 재정의하거나 OnClientClickin을 추가하면 됩니다.저는 인라인 태그를 별로 좋아하지 않습니다.
namespace My.WebControls {
[ToolboxData("<{0}:LinkButton runat=server ID=btn></{0}:LinkButton>"), ParseChildren(true), ToolboxItem(true)]
public class LinkButton : System.Web.UI.WebControls.LinkButton {
private bool _postback = true;
[Bindable(true), Category("Behavior"), DefaultValue(true), Description("Gets or Sets the postback click behavior")]
public bool AutoPostBack { get { return _postback; } set { _postback = value; } }
protected override void Render(System.Web.UI.HtmlTextWriter writer) {
if(!AutoPostBack){
this.OnClientClick = "return false";
}
base.Render(writer);
}
}
}
View State에서는 많은 특성을 처리해야 하지만 이 경우에는 문제가 없다고 생각합니다.
언급URL : https://stackoverflow.com/questions/19139747/stopping-onclick-from-firing-when-onclientclick-is-false
'programing' 카테고리의 다른 글
| .NET Core와 .NET Standard Class Library 프로젝트 유형의 차이점은 무엇입니까? (0) | 2023.05.23 |
|---|---|
| C#에서 기본 생성자 호출 (0) | 2023.05.23 |
| .NET의 이벤트 서명 - 강력한 유형의 '발신자'를 사용하시겠습니까? (0) | 2023.05.23 |
| iOS 13 전체 화면에서 모달 표시 (0) | 2023.05.18 |
| MongoDB에서 속성을 텍스트에서 날짜 유형으로 변환하려면 어떻게 해야 합니까? (0) | 2023.05.18 |