2013-07-25 82 views
0

我試圖檢測我的頁面上的所有文本框和下拉列表,並檢查它們是否在窗口卸載時發生了更改。問題是,我可以檢測文本框,但不是下拉列表。這是我如何做到的。在ASP.NET中下拉的選擇器JQUERY

$(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> 

我認爲通過添加「選擇」將檢查所有dropdownlists,但現在,它沒有。有任何想法嗎?謝謝!

回答

1

另一種方法可能是將onchange設置爲所有的輸入,當它改變時設置一個布爾變量,然後檢查布爾變量,而不是試圖比較每個實際值?

您的問題可能是「PropertyChange」事件,是不是隻是「變化」

此外,您的下拉列表中做回發,這也許就是繞過你的事件?

+0

我改變了一個 「PropertyChange」 只是 「變化」 和它的工作。謝謝! – ljpv14

0

刪除下面的下拉列表

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

,並使用此:

<select id="LocationIdDDL"><option><option></select> 
+0

我寧願不改變我創建它的方式。這將是一個很大的變化。我真的需要使用ASP.NET控件。 – ljpv14