c#如何启用按钮ontextchange而不回发

时间:2011-03-22 18:12:32

标签: c# javascript asp.net button lightbox

所以我有一个灯箱,弹出一个带有文本框和两个按钮的aspx页面(提交 - 禁用和取消 - 启用)。我想在texttext上启用我的提交按钮。它单独打开时工作正常(不是作为灯箱),但是当我每次使用灯箱功能正常运行ontextchange时会触发整个页面刷新禁用灯箱。

<asp:TextBox ID="textBox1" runat="server" OnTextChanged="OnTextChanged_AttributesEdited" autopostback="true">


protected void OnTextChanged_AttributesEdited(object sender, EventArgs e)
{
    btnSubmit.Enabled = true;

}

现在,如果我取出“autopostback = true”,那么它将不会触发ontextchanged。我想知道如果javascript成为启用按钮的方式是否更好?还是有办法在触发ontextchanged时阻止回发?

非常感谢!

2 个答案:

答案 0 :(得分:2)

我认为这对于应用程序中的某些jQuery来说是一个主要用途。如果没有回发到服务器以启用/禁用按钮,这将看起来更平滑,加载更快并保持当前页面状态不变。一个例子可能如下:

<script type="text/javascript">
$(document).ready(function() {    
    $("#textBox1").change(function() {
        $("#btnSubmit").removeAttr("disabled");
    });
});
</script>

只需在关闭body代码之前将上述脚本代码放入HTML中。

然而,更好的解决方案是将特定的CSS类分配给应该继承该行为的所有文本框。假设您为所有这些文本框分配了一个名为“someCssClass”的CSS类,那么您的脚本将如下所示:

<script type="text/javascript">
$(document).ready(function() {    
    $("input.someCssClass").change(function() {
        $("#btnSubmit").removeAttr("disabled");
    });
});
</script>

答案 1 :(得分:-1)

我会使用@FarligOpptrenden提到的jQuery,但是如果你没有它并且只想要普通的javascript,那么这应该可行。

在灯箱内输入:

<input type="text" id="textbox" onKeyUp="enableSubmitButton()" />
<input type="button" id="submitButton" value="Submit" />
<input type="button" id="cancelButton" value="Cancel" />

使用Javascript:

<script type="text/javascript">

function enableSubmitButton()
{
document.getElementById('submitButton').disabled = false;
document.getElementById('cancelButton').disabled = true;
}

</script>

你也可以在javascript中加载启用/禁用按钮:

<script type="text/javascript">

window.onload = function () {

document.getElementById('submitButton').disabled = true;
document.getElementById('cancelButton').disabled = false;

}
</script>