[英]Fire ontextchanged() event of an asp:TextBox via Javascript
[英]ASP.Net OnTextChanged event doesn't fire when javascript function added to web page
我在 ASP.Net 页面上有一个 TextBox,其中 OnTextChanged 设置为代码隐藏 function:
<asp:TextBox ID="txtFirstName" runat="server" Width="150px"
OnTextChanged="txtFirstName_TextChanged" AutoPostBack="true"></asp:TextBox>
protected void txtFirstName_TextChanged(object sender, EventArgs e)
{
if (cbExisting.Checked)
{
DataSet ds =
DataGateway.getExistingEmployeeInfo(txtLastName.Text, txtFirstName.Text);
if (ds != null && ds.Tables[0].Rows.Count > 0)
{
if (ds.Tables[0].Rows.Count == 1)
txtEmployeeID.Text = ds.Tables[0].Rows[0]["EmployeeID"].ToString();
else
{
lblError.Text = "There is more than one existing employee with that name.<br>";
lblError.Text = lblError.Text + "Please indicate which employee you want.<br>";
foreach (DataRow drow in ds.Tables[0].Rows)
{
TableRow trow = new TableRow();
TableCell cell = new TableCell();
CheckBox cb = new CheckBox();
cb.Text = drow["FirstName"].ToString() + " " +
drow["LastName"].ToString() + " (" +
drow["EmployeeID"].ToString() + ")";
cb.AutoPostBack = true;
cb.EnableViewState = true;
cb.ViewStateMode = ViewStateMode.Enabled;
cb.Attributes.Add("onclick", "populateEmpID('"+
cb.ClientID + "','" +
txtEmployeeID.ClientID + "');");
cell.Controls.Add(cb);
trow.Cells.Add(cell);
tblMultEmps.Rows.Add(trow);
}
}
}
}
}
这一切都很好,直到我将我的代码中提到的 javascript function 添加到 web 页面:
function populateEmpID(CheckBoxID, EmployeeID) {
var cb = document.getElementById(CheckBoxID);
var tbempid = document.getElementById(EmployeeID);
int cblen = cb.length;
String empid = cb.value.substring(cblen - 6, cblen - 1);
tbempid.value = empid;
}
一旦我添加了这个 javascript function,OnTextChanged 事件就会停止触发。
请注意,TextBox 位于 ASP.Net 视图控件内的 HTML 表中。 此外,此页面上有许多 javascript 功能可以正常工作。 仅当我尝试添加上面的 function 时才会出现此问题。 该项目正在使用.Net Framework 4,我在 Visual Studio 2017 中工作。这到底是怎么回事?
这可能无法解决整个问题,但这些语句不是有效的 js:
int cblen = cb.length;
String empid = cb.value.substring(cblen - 6, cblen - 1);
应该
var cblen = cb.length;
var empid = cb.value.substring(cblen - 6, cblen - 1);
同样,可能还有其他问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.