gpt4 book ai didi

javascript - 仅当 asp 文本框中有文本时才启用 asp 按钮

转载 作者:行者123 更新时间:2023-11-29 22:30:49 25 4
gpt4 key购买 nike

好的,所以我在一个多 View 的页面上有多个 ASP 文本框和 ASP 按钮。只有在文本框中输入了文本时,才应启用与每个文本框关联的提交按钮。因此,我编写了一个 Javascript 函数来处理这个问题,但我收到一条错误消息,提示 "document.getElementById(...)' is null or not an object"/p>

    function checkEmptyTxtBox(val, savebtn) {
if (val.value.replace(/^\s+|\s+$/g, "") == "")
document.getElementById(savebtn).disabled = true;
else
document.getElementById(savebtn).disabled = false;
}

<asp:TextBox
ID="txt_Comments_2"
runat="server"
Wrap="true"
TextMode="MultiLine"
onkeyup="checkEmptyTxtBox(this,'<%= btnSave2.ClientID %>')">
</asp:TextBox>

<asp:Button
ID="btnSave2"
runat="server"
text="Save"
Enabled="False"/>

这是在 VS2010 上。

最佳答案

您不能使用 <%= %> 设置服务器端控件的属性.如果您查看呈现的源代码,它看起来像这样:

 onkeyup="checkEmptyTxtBox(this,&#39;&lt;%= btnSave2.ClientID %>&#39;)"

它确实包含 <%= %> .

您可以像这样在页面加载时设置属性:

protected void Page_Load(object sender, EventArgs e)
{
txt_Comments_2.Attributes["onkeyup"] = "checkEmptyTxtBox(this,'" + btnSave2.ClientID + "')";
}

编辑:

正如许多人愿意指出的那样;这并不是用 HTML 进行事件注册的真正“最佳”方式。相反,JavaScript 应该通过添加事件监听器来绑定(bind)到 keyup 事件。例如,对于 jQuery,它变成了:

$(document).ready(function() {
$('#<%: txt_Comments_2.ClientID %>').keyup(function() {
if ($(this).val().replace( /^\s+|\s+$/g , "") == "") {
$('#<%: btnSave2.ClientID %>').attr('disabled', 'disabled');
}
else {
$('#<%: btnSave2.ClientID %>').removeAttr('disabled');
}
});
});

您的 ASP.NET 标记如下所示:

<asp:TextBox 
ID="txt_Comments_2"
runat="server"
Wrap="true"
TextMode="MultiLine" />

<asp:Button
ID="btnSave2"
runat="server"
text="Save"
Enabled="False"/>

这样做的好处是不会让您的 HTML 因事件注册而变得困惑。甚至还有其他可能更简洁的方法,例如 KnockoutJS。

关于javascript - 仅当 asp 文本框中有文本时才启用 asp 按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7015769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com