好的我的基本問題是如何模擬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); –