0

ページ上のすべてのテキストボックスとドロップダウンリストを検出し、ウィンドウのアンロード時に変更があるかどうかを確認しようとしています。問題は、テキストボックスは検出できますが、ドロップダウンリストは検出できないことです。これが私のやり方です。

$(document).ready(function () {
        var warnMessage = 'Warning: You have unsaved changes.';
        $('input:not(:button,:submit),input[type="text"],select').each(function () {
            var elem = $(this);

            // Save current value of element
            elem.data('oldVal', elem.val());

            // Look for changes in the value
            elem.bind("propertychange keyup input paste", function (event) {
                // If value has changed...
                if (elem.data('oldVal') != elem.val()) {
                    window.onbeforeunload = function () {
                        if (warnMessage != null) return warnMessage;
                        else warnMessage = 'Warning: You have unsaved changes.';
                    }
                }
            });

        });
        $('input:submit,#addLiquidFillButton,#addCommentButton,#addManualRegenButton,#addStateMileageButton').click(function (e) {
            warnMessage = null;
        });
    });

追加情報。このコードを使用してドロップダウンリストを作成します:

<asp:DropDownList ID="LocationIdDDL" CssClass="ddl" runat="server" AutoPostBack="true"></asp:DropDownList>

「select」を追加するとすべてのドロップダウンリストがチェックされると思いますが、現在はそうではありません。何か案は?ありがとう!

4

2 に答える 2

1

別のアプローチは、変更時にブール変数を設定するすべての入力に onchange を設定し、実際の各値を比較するのではなく、そのブール変数をチェックすることですか?

あなたが発行するのは「propertychange」イベントかもしれませんが、それは単なる「変更」ではありません

また、ドロップダウン リストがポストバックを実行していますが、イベントをバイパスしている可能性がありますか?

于 2013-07-25T05:15:52.890 に答える
0

以下のドロップダウンリストを削除します

<asp:DropDownList ID="LocationIdDDL" CssClass="ddl" runat="server" AutoPostBack="true"></asp:DropDownList>

これを使用します:

<select id="LocationIdDDL"><option><option></select>
于 2013-07-25T05:16:04.920 に答える