2014-07-11 143 views
1

有一個文本框,我只想輸入數字,輸入第6個數字我想通過點擊客戶端隱藏按鈕的onclick事件(服務器端)我想在其中做一些操作。如何在onchange事件中調用javascript中的兩個函數

我面對的問題是,當我在文本框中輸入任何數字時,運行下面的代碼示例時,只調用第一個方法AllowNumericOnly()而不調用第二個方法callMethod()即使在第一個方法返回後真正的價值。

爲什麼,我不明白?

<script type="text/javascript"> 

function callMethod() 
{ 
    alert('1'); 
    var PinCodeValue=document.getElementById('txtTest').value; 
    var Pincodelength = PinCodeValue.length; 
    if(Pincodelength>4) 
    { 
     alert('Pincodelength>4'); 
     document.getElementById('Button1').click(); 
     return true;      
    } 
    return false; 
}  

function AllowNumericOnly(e, t) { 
    try { 
     if (window.event) { 
      var charCode = window.event.keyCode; 
     } 
     else if (e) { 
      var charCode = e.which; 
     } 
     else { return true; } 
     if ((charCode > 47 && charCode < 58) || charCode == 8 || charCode == 0) 
     { 
     alert('true'); 
      return true; 
      } 
     else 
     { 
     alert('false'); 
      return false; 
      } 
    } 
    catch (err) { 
     alert(err.Description); 
    } 
} 
</script> 


<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:TextBox ID="txtTest" runat="server" MaxLength="7" onkeypress="return  AllowNumericOnly(event,this); callMethod();" AutoPostBack="true"></asp:TextBox> 
     <asp:Button ID="Button1" runat="server" Text="Button" Style="display: none"  OnClientClick="alert1();" 
      OnClick="Button1_Click" /> 
    </div> 
    </form> 
</body> 
+2

創建一個調用兩個函數的新函數,onchange然後調用新函數 –

+0

只需使用一個方法'callMethod()'並從那裏調用'AllowNumericOnly'。只有在輸入了足夠多的有效字符時,您纔會調用所有代碼。 – Tanner

回答

0

onkeypress事件= 「如果(AllowNumericOnly(事件,這一點))返回callMethod();否則返回false;」

1

最好的方法是創建一個可以調用這兩者的小函數,因爲它改善了代碼分離。

function doBoth(e, t) { 
    var result = AllowNumericOnly(e, t) 
    callMethod() 
    return result; 
} 

那麼你的ASP代碼會讀

<asp:TextBox ID="txtTest" runat="server" MaxLength="7" onkeypress="return doBoth(event, this);" AutoPostBack="true"></asp:TextBox> 

或替代方法是jQuery中添加多個處理程序,這同樣可以在一個單一的函數來完成,但這僅僅是爲了說明。在你的情況下,它會使你的返回值有點困難

$("#txtTest").keypress(function() { AllowNumericOnly(); }) 
$("#txtTest").keypress(function() { callMethod(); }) 
+0

感謝lan解決 –

+0

@ user3567527:很好 - 請隨時點擊打勾並接受這個答案,如果它解決了您的問題(並可能upvote答案)。投票是驅動社區的原因:) – Ian

0

你可以使用jQuery和綁定兩個事件處理程序,以一個元素(按鈕)...

$("#Button1").bind("click", function() { 
    alert("User clicked on 'foo.'"); 
}); 

$("#Button1").bind("click", function() { 
    alert("User really clicked on 'foo.'"); 
}); 

在上述情況下,兩個處理器工作,jQuery允許以這種方式倍數...只需瞭解它們綁定順序的火災。請參閱this link for more info

相關問題