2

Javascript : コードが実行されるキャンセルを押した後でも、Return false が機能しない

1 つのボタンで 2 つの JavaScript を実行しようとしています。2 番目のスクリプトが実行されると、[キャンセル] をクリックしてもコードが実行されます。以下はコードです。誰か助けてくれませんか?

<script type="text/javascript" language="javascript">
  var TargetBaseControl = null;
  window.onload = function () {
    try {
      //get target base control.
      TargetBaseControl = document.getElementById('<%= this.GridView1.ClientID %>');
    } catch (err) {
      TargetBaseControl = null;
    }
  }

  function TestCheckBox() {
    if (TargetBaseControl == null) return false;
    //get target child control.
    var TargetChildControl = "chkSelect";
    //get all the control of the type INPUT in the base control.
    var Inputs = TargetBaseControl.getElementsByTagName("input");
    for (var n = 0; n < Inputs.length; ++n)
    if (Inputs[n].type == 'checkbox' && Inputs[n].id.indexOf(TargetChildControl, 0) >= 0 && Inputs[n].checked) return true;
    alert('Please select at least one Request to Close!');
    return false;
  }

  function UpdateConfirmation() {
    if (confirm("Are you sure, you want to close selected request ?") == true) return true;
    else return false;
  }
</script>




<asp:Button ID="btnUpdate" runat="server" 
        OnClick="btnUpdate_Click" Text="Close Request" 
         OnClientClick="var b = TestCheckBox(); if (b) UpdateConfirmation(); return b"/>
4

3 に答える 3

2

関数を呼び出すときに return を追加する必要があります。

<asp:Button ID="btnUpdate" runat="server" 
        OnClick="btnUpdate_Click" Text="Close Request" 
         OnClientClick="if(TestCheckBox()) return UpdateConfirmation();"/>
于 2013-02-21T06:42:21.627 に答える
1

Shafeeqと他のすべての人にも感謝します

作業コード

<script type="text/javascript" language="javascript">

             var TargetBaseControl = null;

             window.onload = function () {
                 try {
                     //get target base control.
                     TargetBaseControl =
       document.getElementById('<%= this.GridView1.ClientID %>');
                 }
                 catch (err) {
                     TargetBaseControl = null;
                 }
             }

             function TestCheckBox() 
             {
                 if (TargetBaseControl == null) return false;

                 //get target child control.
                 var TargetChildControl = "chkSelect";

                 //get all the control of the type INPUT in the base control.
                 var Inputs = TargetBaseControl.getElementsByTagName("input");

                 for (var n = 0; n < Inputs.length; ++n)
                     if (Inputs[n].type == 'checkbox' &&
        Inputs[n].id.indexOf(TargetChildControl, 0) >= 0 &&
        Inputs[n].checked)
                         return true;

                 alert('Please select at least one Request to Close!');
                 return false;
             }


          function UpdateConfirmation() {
              if (confirm("Are you sure, you want to close selected request ?") == true)


                     return true;

                 else return false;

             }

<asp:Button ID="btnUpdate" runat="server" 
        Text="Close Request" 
        OnClick="btnUpdate_Click" 
OnClientClick="var b = TestCheckBox(); if (b) return UpdateConfirmation(); return b"/>
于 2013-02-21T08:22:46.473 に答える
1

2 つ使用する必要がありますasp:Button(1 つのボタンは見えません)。例えば ​​-

//some code
//
function UpdateConfirmation() {
    if (confirm("Are you sure, you want to close selected request ?") == true) 
    document.getElementById('<%= this.btn.ClientID %>').click();//fire hidden button
    else return false;
  }
</script>


<asp:Button ID="btnUpdate" runat="server" Text="Close Request" 
   OnClientClick="var b = TestCheckBox(); if (b) UpdateConfirmation(); return b" 
   UseSubmitBehavior="false"/>
<asp:Button ID="btn" runat="server" Text="Button" 
    OnClick="btnUpdate_Click" CssClass="VisibleFalse" TabIndex="-1" />


btnは隠しボタンであり、btnUpdateメイン ボタンです。に設定する
ことを忘れないでくださいUseSubmitBehaviorfalse

編集document.getElementById('<%= this.btn.ClientID %>').click();の代わりに使用してくださいdocument.getElementById(ClientIDPrefix + "btn").click();


ボタンクリックを発生させるのは単なるJavaScriptコードです。

于 2013-02-21T06:37:35.893 に答える