0

asp.net ページに次のコードがあります。

<button dojotype="dijit.form.Button">
    <asp:Label ID="lblClear" runat="server" meta:resourcekey="lblClearResource1" />
        <script type="dojo/method" event="onClick" args="evt">
            return ClearCheckBoxes('<%=clientIds.ClientID%>');
        </script>
</button>

ClearCheckBoxes は次のとおりです。

function ClearCheckBoxes(obj1) {
    var chks = document.getElementsByTagName("input");
    for (i = 0; i < chks.length; i++) {
        if (chks[i].type == "checkbox") {
            if (chks[i].checked == true) chks[i].checked = false;
        }
    }
    document.getElementById(obj1).value = "";
    document.getElementById('<%=clientsIds.ClientID %>').value = "";

    return false;
}

このコードは、ポストバックが発生する IE8 を除くすべてのブラウザーで正常に動作します。このシナリオで IE8 でポストバックを無効にする方法はありますか? 私がオンラインで見つけたものはすべて、falseを返すと言っていました。動作するはずですが、ポストバックは妨げられません。

4

2 に答える 2

1

通常、typeボタンのデフォルトは でsubmit、周囲のフォームが存在する場合はそれを送信します。このボタンがフォームを送信するためのものではない場合type="button"<button>タグに追加すると、送信ボタンのように動作しなくなります。

縮小された例: (削除type="button"してみて、IE8 での違いを確認してください)

<form>
    <button type="button" data-dojo-type="dijit/form/Button">Button
        <script type="dojo/method" event="onClick" args="evt">
            this.set('label', 'Clicked');
        </script>
    </button>
</form>
于 2013-10-24T03:59:37.010 に答える
0

を見てくださいdojo/_base/event#stopここにドキュメンテーションがあります

伝播を防ぎ、渡されたイベントのデフォルト アクションを上書きします

それをコードに含めることができます。

require(['dojo/_base/event']);

<button dojotype="dijit.form.Button">
    <asp:Label ID="lblClear" runat="server" meta:resourcekey="lblClearResource1" />
        <script type="dojo/method" event="onClick" args="evt">
                dojo.stopEvent(evt); // dojo/_base/event extends dojo pre-2.0 
                return ClearCheckBoxes('<%=clientIds.ClientID%>');
        </script>
</button>

dojo/_base/event#stopIE8を含む(私が信じている)クロスブラウザで動作します。

テンプレート用のそのようなモジュールが実行できない場合require(私自身はそのようなことをしたことがありません)、IE での既定の動作を防止するための固有のコードを次に示します。

evt = evt || window.event;
evt.cancelBubble = true;
on._preventDefault.call(evt);
于 2013-10-24T00:14:37.300 に答える