好吧,我的基本问题是如何在javascript中模拟按钮点击。
我知道我必须使用document.getElementById(“btnSubmit”)。click();但这似乎也没有调用onClientClick javascript函数。
Enviorment:
我正在使用带有C#和javascript的ASP.NET。
发生了什么: 我有一个输入文本区域,我想确保用户必须在启用提交按钮之前输入一个字符。我能用onkeypress =“validateTxt();”来做到这一点。然后调用此函数
function validateTxt() {
var input = document.getElementById("<%=txtUserName.ClientID %>").value;
//Need a min of 3 characters
if(input.length > 1)
{
document.getElementById("btnSubmit").disabled = false;
}
else
{
document.getElementById("btnSubmit").disabled = true;
}
}
唯一的问题是不注册退格。
为了解决这个问题,我在网上找到了
<script type="text/javascript">
document.getElementsByName('txtUserName')[0].onkeydown = function (event) {
if (event === undefined) event = window.event; // fix IE
if (event.keyCode === 8)
validateTxt();
if (event.keyCode === 13) {
document.getElementById("btnSubmit").click();
}
};
现在,只要用户按下退格键,我的javascript函数就会被调用。这很有效,直到我发现当我从文本区域按Enter键时它不会调用我的javascript函数。
以下是所有相关代码......
<script type="text/javascript">
function InformUser()
{
window.document.getElementById("loadingMessageDIV").style.display = "block";
<%=Page.GetPostBackEventReference(btnSubmit as Control)%>
document.getElementById("btnSubmit").disabled = true;
}
function validateTxt() {
var input = document.getElementById("<%=txtUserName.ClientID %>").value;
//Need a min of 3 characters
if(input.length > 1)
{
document.getElementById("btnSubmit").disabled = false;
}
else
{
document.getElementById("btnSubmit").disabled = true;
}
}
</script>
这是文本区域+ javascript边界功能
<asp:TextBox ID="txtUserName" runat="server" Font-Size="11pt" onkeypress="validateTxt();"></asp:TextBox>
<script type="text/javascript">
//We bind the textbox to this function and whenever the backspace key is pressed it will validateTxt
document.getElementsByName('txtUserName')[0].onkeydown = function (event) {
if (event === undefined) event = window.event; // fix IE
if (event.keyCode === 8)
validateTxt();
if (event.keyCode === 13) {
document.getElementById("btnSubmit").click();
}
};
</script>
这是提交按钮
<asp:Button ID="btnSubmit" runat="server" OnClientClick="InformUser();" OnClick="btnSubmit_Click"
Text="Login" Font-Bold="True" Enabled="True" />
<script type="text/javascript">
//Disable the button until we have some actual input
document.getElementById("btnSubmit").disabled = true;
</script>
所以回顾它确实按下按钮,但它也无法禁用它。当用户按下Enter键然后按下按钮时,我甚至试图直接调用InformUser,但这也不起作用。
我知道这与我如何将javascript函数绑定到文本区域有关,因为当我把它取出时它可以工作。
感谢您的帮助
答案 0 :(得分:0)
如果您真正想要做的是根据文本区域中的文本量启用/禁用提交按钮,那么每次更改时检查长度是最简单的。
您可以使用jQuery吗?如果可以的话,这是一个微不足道的问题,因为jQuery会使键盘事件正常化,因此您不必担心不同的浏览器会引发不同的事件。
作为一个简单的实验,我使用此HTML创建了jsFiddle:
<textarea id="txt"></textarea>
<label id="count" />
和这个JavaScript:
$('#txt').keyup(function () {
$('#count').text($('#txt').val().length);
});
在每个keyup(我使用keyup而不是keydown或keypress作为keyup在修改文本后触发)时,长度会更新。这会记录普通键,退格键,删除键,输入键等,并在FF和IE8中工作。
在您的情况下,您显然会更改功能以启用/禁用提交按钮。