Элемент управления TextBox
имеет только событие TextChanged
на стороне сервера, и вы не можете легко создать "пользовательское" событие на стороне сервера. Тем не менее, вы можете позволить вашей функции JavaScript CallScript()
выполнять обратную передачу на сервер, вызывая функцию _postback()
.
Добавьте атрибут OnTextChanged
в элемент управления TextBox
(я рекомендую удалить атрибут AutoPostBack
, но это на ваше усмотрение):
<asp:TextBox ID="txtCurrBlkTotal" runat="server"
onkeyup="CallScript(this)"
OnTextChanged="txtCurrBlk_TextChanged" />
Я добавил onkeyup
прямо здесь, но вы можете использовать txtCurrBlkTotal.Attributes.Add("onKeyUp", "CallScript(this)");
, если хотите.
Теперь, в конце функции CallScript()
, вызовите функцию _postback()
для элемента управления TextBox
:
function CallScript(sender) {
//...
__doPostBack("<%= txtCurrBlkTotal.ClientID %>", "");
}
Это будет отправлять обратно на сервер каждый раз, когда происходит событие onKeyUp
. Вы можете захватить и обработать это в событии TextChanged
:
protected void txtCurrBlkTotal_TextChanged(object sender, EventArgs e) {
keypressUpdateTotals();
}
Кроме того, вы можете сделать так, чтобы ваша функция JavaScript CallScript()
выполняла Ajax-вызов вашей функции keypressUpdateTotals()
с выделенным кодом. Я думаю, что это лучшее решение, но вы можете решить для себя.