문제

GridView의 itemTemplate에 텍스트 상자가 있습니다. _rowdatabound 이벤트에서는 다음과 같은 텍스트 상자에 속성을 추가합니다.

TextBox txtQuantity = (TextBox)e.Row.FindControl("txtQuantity");
txtQuantity.Attributes.Add("onkeypress", "CheckInputForNumeric(event)"); 

그리고 그것은 단순히 JS 기능을 발사하지 않습니다.

나는 Onclick, Onblur, Onkeypress를 시도했습니다 ... 심지어 사건을 Onclick, Onblur, Onkeypress로 변경하려고 시도했습니다.

같은 페이지의 다른 곳에서 나는 가지고 있습니다.

    txtAddMarkup.Attributes.Add("onkeypress", "CheckInputForNumeric(event)");

(그 텍스트 박스는 그리드 뷰에 있지 않습니다) 이것은 잘 작동합니다.

나는 내가 무엇을하든이 텍스트 상자가 JavaScript 함수를 발사하도록하는 것을 얻을 수 없기 때문에이 시점에서 완전히 붙어 있고 좌절했습니다.

도움이 되었습니까?

해결책

프로젝트를 실행하고 Broswer (예 : Firefox, Safari 등)에서 소스를 보면 생성 된 텍스트 상자의 이름을 살펴보십시오. 텍스트 상자의 이름이 변경되었을 것입니다. 감사합니다, ASP.

DOM을 사용하여 이름으로 이름으로 요소에 액세스 할 수 없습니다.

다른 팁

어떤 이유로 임시 인터넷 파일을 삭제하고 페이지를 다시로드하는 것이 최신 .js를 얻지 못했습니다. 프로젝트를 내리고 다시 건설해야했습니다. 다른 컨트롤을 위해 전에 한 번도 해본 적이 없기 때문에 이상한 일입니다.

입력에 감사드립니다!

이거 한번 해봐:

TextBox txtQuantity = (TextBox)e.Row.FindControl("txtQuantity");
txtQuantity.Attributes.Add("onkeypress", "CheckInputForNumeric(event)");

txtQuantity.Attributes["onkeypress"] =
    string.Format("javascript:CheckInputForNumeric(this,'{0}','{1}','{2}');", argument1, argument2, argument3);

또는 간단히

txtQuantity.Attributes["onkeypress"] =
    string.Format("javascript:CheckInputForNumeric (this);");
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top