好的我的基本问题是如何模拟javascript中的按钮单击。绑定的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函数被调用。这工作得很好,直到我发现当我按下从文本区域输入它不会调用我的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>
所以回顾它按下按钮,但它也无法禁用它。我甚至试图直接调用InformUser,当用户按下Enter键,然后按下按钮,但那也不起作用。
我知道它与我如何将javascript函数绑定到文本区域有关,因为当我将它取出时,它可以正常工作。
感谢您的帮助
只需注意用户可以按回车键,长度将为1,用户将能够提交 – peroija
True - 与原始代码相同。如果你想解决这个问题,那么你可以在检查长度之前剔除任何回车符:$('#count')。text($('#txt')。val()。replace(/ [\ n \ r ]/g,'').length); –