2017-11-25 1 views
0

자바 스크립트 함수를 추가하면 작동하지 않으며 텍스트를 변경하려고하는 버튼도 작동하지 않습니다. 코드는 javaScript 함수가 내 ASP.Net 컨트롤에서 작동하지 않습니다.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 

    <script type="text/javascript"> 

     function clientValidate(source, args) 
     { 
      if (parseInt(args.Value) < 10) 
      { 
       return source.IsValid = false; 

      } 
      else 
      { 
       return source.IsValid = true; 
      } 
     } 

     function Alert(ctr) 
     { 
      alert("Hello"); 
      ctr.Text = "clicked"; 
     } 

    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <div> 
      <asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="Value Must not be Below 10" ClientValidationFunction="clientValidate" OnServerValidate="CustomValidator1_ServerValidate" ControlToValidate="txt" Display="Dynamic" ForeColor="#FF5050"></asp:CustomValidator> 
      &nbsp;&nbsp; 
      <asp:TextBox ID="txt" runat="server" AutoPostBack="true" ></asp:TextBox> 
      &nbsp; 
      <asp:Button ID="btn1" runat="server" Text="Button" OnClientClick="Alert(btn1)" /> 

     </div> 
    </form> 
</body> 
</html> 

한 경고 스크립트 작업을하지만 버튼의 텍스트가 변경되지 않은 것을 말하는 것은 벨로

입니다.

다른 것은 검증 자의 서버 측 이벤트가 별도의 cs 파일에 있습니다. 도움을

감사합니다.

답변

0

클라이언트 유효성 검사 기능에서 인수 사용이 잘못되었습니다. 올바른 사용법은 이와 같습니다.

function clientValidate(source, args) 
{ 
//sender is <span...>err</span> extended properties include controltovalidate 
//args is {Value: 123, IsValid: true} 
    if (parseInt(args.Value) < 10) 
    { 
     args.IsValid = false; //not source and no return 
     //other logic 

    } 
    else 
    { 
     //args.IsValid = true; //redundant. **true** is default value 
     //return source.IsValid = true; //see above 
     //other logic 
    } 
} 

마찬가지로 Alert 기능. 이 함수는 정확하며 작동 할 수도 있습니다. 통화가 잘못되었습니다. 다음과 같은 함수를 호출하십시오.

<asp:Button ID="btn1" runat="server" Text="Button" OnClientClick="Alert(this)" /> 

참고 전화에서 this 인수 코멘트

업데이트/추가 질문

사용자 정의 Alert 기능 이상의 인수를 취할 수있다. 이 같은.

+0

형님 감사합니다, 첫 번째 일은 괜찮습니다. 그러나 두 번째 부분에서. 예를 들어, 페이지에서 다른 객체 (예 : asp : 원본 게시물에서 볼 수 있듯이 ID가 txt 인 텍스트 상자 컨트롤)를 전송하여 경고하고 가치를 얻은 다음이를 허용하는 것이 가능합니까? ==> 기능 경고 (ctr) { 경고 ("Hello"+ ctr.Text); } 또는 수행 ==> 기능 알림 (ctr) { alert ("Hello"); ctr.Text = "클릭"; } 가능합니까? – Heydar

+0

내가 이해할 수있는 asp 보낼 수 없습니다 : Contols javascript 메서드. 그래서 그것은 HTML 컨트롤이어야합니다. 그거야? – Heydar

+0

정확하지 않습니다. 'asp : controls'는 HTML 요소로 표현됩니다. 조심해. –

0

클라이언트 측은 텍스트 및 서버에서만 액세스 할 수 있다는 사실을 알지 못합니다. 대신 클라이언트 측 속성을 사용해야합니다.

사용이 :

function Alert(ctr) 
    { 
     alert("Hello"); 
     document.getElementById(ctr).value= "clicked"; 
    } 

<input type="button" id="btn1" value="Button" onClick="Alert('btn1')"/> 

은 JS 기능의 사용은 서버에 포스트 백을 수행에서 방지 할 수 있습니다.

+0

아니라 1

function Alert(ctr, msg, evt) { if (evt) evt.preventDefault(); switch (ctr.tagName.toLowerCase()) { case 'input': case 'textarea': ctr.value = msg; break; case 'div': ctr.innerHTML = msg; break; default: alert(msg); break } return false; }
<input type="button" value="Click Me" onclick="return Alert(this,'clicked',event);" /><br /> <div onclick="Alert(this,'div is clicked')">Click div</div>

는 : 답장을 보내 주셔서 감사합니다. 둘째 : ASP.Net 컨트롤에서 자바 스크립트 효과를 적용하고 싶습니다. 세 번째는 내 주요 문제 (유효성 검사기)가 여전히 존재한다는 것입니다. – Heydar

관련 문제