0

編集可能な GridView のテキスト ボックスに変更が加えられたときに、jQuery 関数で隠しフィールドの値を設定します。フォームには 2 つのボタンがあります。1 つは変更を保存するためのもので、もう 1 つは新しい値を使用して別のプロセスを実行するためのものです。2 番目のボタンが最初に押された場合に確認が表示され、変更が保存されなかったことをユーザーに伝えたいと思います。[はい] をクリックすると、変更が保存され、そのボタンのプロセスが実行されます。「いいえ」をクリックしても何も起こりません。変更が検出されなくても、常に確認が表示されるため、「return confirm('')」は使用できません。非表示フィールドに値がある場合 (この場合は「変更済み」) にのみ、確認が表示されます。さまざまな解決策を試しましたが、関数が存在しないか、他の null オブジェクトに関するエラーが発生します。

以下は、変更を検出し、非表示フィールドの値を「変更済み」に設定します。

$(function () {
    $(".gv input.CAIFormat").bind('blur', function (e) {
         $(this).val(CommaFormatted($(this).val()));
         var change = $get('ctl00_BodyContentPlaceHolder_TabContainer1_tabSpaceDriver_hidSummaryTableChanged');
         change.value = "changed";
    });
});

非表示フィールドに値がある場合、asp.net ボタンに確認が表示されます。

<asp:Button ID="btnSaveSDDepartmet" runat="server" Text="Update Departments" />
4

2 に答える 2

0

jQueryでイベントをボタンにバインドし、値を確認してから、入力の値を確認します。

on参考までに --イベントをバインドするために使用を開始しますbind。jQuery 1.7 で非推奨になりました ( http://api.jquery.com/bind/を参照) 。

$("btnSaveSDDepartmet").on('click', function (e) {
     var change = $get('ctl00_BodyContentPlaceHolder_TabContainer1_tabSpaceDriver_hidSummaryTableChanged');
     if (change.value == "changed") {
         if (!window.confirm("Changes not saved -- continue?")){
             e.preventDefault();
             return false;
         }
     }
});

ドキュメント * jQuery.on- http://api.jquery.com/on/ * window.confirm- https://developer.mozilla.org/en-US/docs/DOM/window.confirm

于 2012-08-17T14:34:37.413 に答える
-1

以下が機能しました:

<asp:Button ID="btnSaveSDDepartmet" runat="server" Text="Update Departments" CssClass="CAIButton" OnClick="btnSaveSDDepartmet_Click" OnClientClick="if (!ConfirmMsg()) { return false; }" />

        function ConfirmMsg() {
        var obj = $get('ctl00_BodyContentPlaceHolder_TabContainer1_tabSpaceDriver_hidSummaryTableChanged');
        if (obj.value == "changed")
            return confirm("Data has been changed, but not saved. Do you want to save and continue?");
        else
            return false;
    }
于 2012-08-17T14:27:07.280 に答える