私の基本的な質問は、javascript でボタンのクリックをシミュレートする方法です。
document.getElementById("btnSubmit").click(); を使用する必要があることはわかっています。しかし、これは onClientClick JavaScript 関数も呼び出していないようです。
環境:
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関数をテキスト領域にバインドする方法と関係があることはわかっています。これを取り出すと機能するからです。
助けてくれてありがとう