키업에서 텍스트 상자 포스트백을 만들려면 어떻게 해야 합니까?
OnTextChanged 이벤트에서 드롭다운의 내용을 변경하는 텍스트 상자가 있습니다.이 이벤트는 텍스트 상자가 초점을 잃으면 발생하는 것 같습니다.키 누름 또는 키 업 이벤트에서 이를 수행하려면 어떻게 해야 합니까?
여기 내 코드의 예가 있습니다.
<asp:TextBox ID="Code" runat="server" AutoPostBack="true" OnTextChanged="Code_TextChanged">
<asp:UpdatePanel ID="Update" runat="server">
<ContentTemplate>
<asp:DropDownList runat="server" ID="DateList" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Code" />
</Triggers>
</asp:UpdatePanel>
그래서 뒤에 있는 코드에서, 저는 페이지 로드에 드롭다운을 묶습니다.Code_TextChanged 이벤트는 드롭다운만 되감기 합니다.텍스트 상자가 초점을 잃었을 때보다 각 키 누르기에서 이런 일이 발생했으면 좋겠습니다.
저는 최근에 이 코드를 물려받았는데 이 방법이 저에게 이상적인 방법은 아니지만 시간적인 제약으로 인해 웹 서비스 방식으로 이 코드를 다시 쓸 수 없습니다.
jQuery를 사용하여 텍스트 상자에 대한 "변경" 이벤트와 일치하도록 "키업" 이벤트를 바인딩하려고 했지만, 이것은 첫 번째 키를 누른 경우에만 작동합니다.
이렇게 하면 문제가 해결됩니다.논리는 카일이 제시한 해결책과 같습니다.
이것 좀 봐.
<head runat="server">
<title></title>
<script type="text/javascript">
function RefreshUpdatePanel() {
__doPostBack('<%= Code.ClientID %>', '');
};
</script>
<asp:TextBox ID="Code" runat="server" onkeyup="RefreshUpdatePanel();" AutoPostBack="true" OnTextChanged="Code_TextChanged"></asp:TextBox>
<asp:UpdatePanel ID="Update" runat="server">
<ContentTemplate>
<asp:DropDownList runat="server" ID="DateList" />
<asp:TextBox runat="server" ID="CurrentTime" ></asp:TextBox>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Code" />
</Triggers>
</asp:UpdatePanel>
뒤에 코드는 이런 식으로...
protected void Code_TextChanged(object sender, EventArgs e)
{
//Adding current time (minutes and seconds) into dropdownlist
DateList.Items.Insert(0, new ListItem(DateTime.Now.ToString("mm:ss")));
//Setting current time (minutes and seconds) into textbox
CurrentTime.Text = DateTime.Now.ToString("mm:ss");
}
작업 변경 사항을 확인하기 위해 추가 텍스트 상자를 추가했습니다. 텍스트 상자를 제거하십시오.
자바스크립트, 업데이트 패널, 그리드뷰, sqld 데이터 소스 및 텍스트 박스로 간단하게 할 수 있는 방법이 있습니다.입력하면 테이블이 검색되고 결과가 표시됩니다.짧고 달콤한, 뒤에 코드가 없습니다.
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="test3.aspx.vb" Inherits="test3" %>
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="asp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
function runPostback() {
document.forms["form1"].submit();
document.getElementById("TextBox1").focus();
}
function getFocus(){
var text = document.getElementById("TextBox1");
if (text != null && text.value.length > 0) {
if (text.createTextRange) {
var FieldRange = text.createTextRange();
FieldRange.moveStart('character', text.value.length);
FieldRange.collapse();
FieldRange.select(); } }
}
function SetDelay() {
setTimeout("runPostback()", 200);
}
</script>
</head>
<body onload="getFocus()">
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="TextBox1" />
</Triggers>
<ContentTemplate>
<asp:TextBox ID="TextBox1" onkeyup="SetDelay();" runat="server"></asp:TextBox>
<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1">
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:purchasing2ConnectionString %>"
SelectCommand="SELECT [name] FROM [vendors] WHERE ([name] LIKE @name + '%')">
<SelectParameters>
<asp:ControlParameter ControlID="TextBox1" Name="name" PropertyName="Text" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
OnTextChanged 이벤트를 트리거하기 위해 자바스크립트 트릭을 사용합니다. 블러 함수를 호출하여 입력 텍스트에 다시 초점을 맞춥니다(또는 입력 텍스트가 많은 경우 두 입력 텍스트에서 포커스 전환).
IE와 파이어폭스에서 테스트를 해봤습니다.
javascript 코드:
function reFocus(id)
{
document.getElementById(id).blur();
document.getElementById(id).focus();
}
aspx 코드
<asp:TextBox ID="txtProdottoLike" runat="server"
ontextchanged="txtProdottoLike_TextChanged"
onKeyUp="reFocus(this.id);"
AutoPostBack="True">
</asp:TextBox>
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="Update" runat="server">
<ContentTemplate>
<asp:GridView ID="GridProdotto" runat="server" AllowPaging="False"
AllowSorting="False" ForeColor="#333333" GridLines="None"
OnSelectedIndexChanging="GridProdotto_SelectedIndexChanging"
Visible="True" Width="100%" Height="100%" AutoGenerateColumns="False">
<RowStyle BackColor="WhiteSmoke" Font-Size="11px" />
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:BoundField DataField="Prodotto">
<ItemStyle Width="80px" HorizontalAlign="Left" />
<HeaderStyle HorizontalAlign="Left" />
</asp:BoundField>
<asp:BoundField DataField="Descrizione">
<ItemStyle HorizontalAlign="Left" />
<HeaderStyle HorizontalAlign="Left" />
</asp:BoundField>
<asp:CommandField SelectText="Seleziona" ShowSelectButton="True" ItemStyle-HorizontalAlign="Right"></asp:CommandField>
</Columns>
</asp:GridView>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="txtProdottoLike" />
</Triggers>
</asp:UpdatePanel>
c# 함수 "GridProdoto_"선택된IndexChanging"은 데이터베이스에서 데이터를 불러와 그리드를 구축합니다.
이게 도움이 될까요?
ASP 만드는 법NET TextBox fire on TextChanged 이벤트 fire in a AJAX UpdatePanel?
언급URL : https://stackoverflow.com/questions/1758240/how-do-i-make-a-textbox-postback-on-keyup
'codememo' 카테고리의 다른 글
| 경고: remote HEAD가 존재하지 않는 ref를 참조하여 체크아웃할 수 없음 (0) | 2023.09.20 |
|---|---|
| jQuery를 사용하여 동적으로 추가된 요소에 이벤트 수신기 추가 (0) | 2023.09.20 |
| 맞춤형 주문으로 결과를 얻는 방법은? (0) | 2023.09.20 |
| 우커머스 주문에서 패키지당 배송비를 어떻게 가져오나요? (0) | 2023.09.20 |
| 절차 프로그램과 객체 지향 프로그램의 차이점은 무엇입니까? (0) | 2023.09.20 |