2010-06-10 62 views
1

我有一個jQuery的腳本來完成以下任務:確認框始終顯示第一(JavaScript的,jQuery的,.NET)

  • 如果我的形式GridView中包含一定的ID一排,它有將 標記爲紅色。
  • 確認對話必須彈出詢問用戶他是否想要這樣或那樣。

我建立了這個代碼:

if (response == "EntryInList") {    
      $('#entryListContainer div table tbody tr').each(function() {     
       if ($(this).attr('id') == 'entry_' + $('#<%= txtProductNumber.ClientID %>').val()) { 
        $(this).css("color", "red"); 
       } 
      } 
      ); 

      if (!confirm("Entry already exists. Really overwrite?")) { 
       jQuery('#<%= txtProductNumber.ClientID %>').val(''); 
       jQuery('#<%= txtCount.ClientID %>').val(''); 
       jQuery('#<%= txtProductNumber.ClientID %>').focus(); 
       return false; 
      } 
     } 

結果,確認框彈出第一,而排被變成了紅色。只有在使用框後 ,它變成紅色。我將如何讓這一行一次變成紅色?

我的另一個問題是確認框拒絕我的頁面被向下滾動。但是 我想這樣做,如果gridview比整個頁面更長。

回答

2

顯示不會更新,直到你的JavaScript代碼執行完畢和confirm對話框模式,將停止所有的腳本,直到對話框關閉。這意味着即使已經發生了這些更改,在框關閉之後,您仍然不會看到文檔發生任何更改。

一個可行的解決方案可能是使用setTimeout(function() {}, 0)來顯示該框,但您可能需要稍微修改其他代碼。

+0

如果使用setTimeout,在任何情況下都會執行確認後的代碼:( – AGuyCalledGerald 2010-06-10 13:50:21

+0

@ Jan-Frederik Carl:我確實預料到了,因此不得不重新編寫代碼,這將涉及'confirm'被移動後的代碼進入定時器的範圍。 – 2010-06-10 14:01:35

+0

完美的,謝謝你的幫助,效果很好。 – AGuyCalledGerald 2010-06-11 08:53:41