2011-10-28 39 views
1

我有以下腳本來要求用戶確認單擊一個按鈕取決於系統設置。任何人都可以看到這個js/jQuery有什麼問題嗎?

系統設置存儲在一個隱藏字段中,該隱藏字段由後面的代碼設置。

標記:

<asp:HiddenField ID="hfConfirmOnApproval" runat="server" Value="False" /> 

CS:

//Read the confirm on approval setting 
hfConfirmOnApproval.Value = Objects.Engine.Settings.Instance.ConfirmOnApproval.ToString(); 

JS:

//Get whether to confirm on approval 
var _confirmOnApproval = new Boolean($('#hfConfirmOnApproval').val()); 

if (_confirmOnApproval ? confirm('Are you sure you want to approve this item?') : true) 
{ 

    // do work 

} 

的問題是,即使_confirmOnApproval設置爲false正在顯示的確認消息框?

我只想要消息框出現,如果其設置爲true。

的_ConfirmOnApproval是目前假

SOLUTION:

JS:

var _confirmOnApproval = $('#<%=hfConfirmOnApproval.ClientID %>').val() == "True" ? true : false; 

if (_confirmOnApproval ? confirm('Are you sure you want to approve this item?') : true) { 
//Do work 
} 

回答

2

這是因爲你使用new Boolean創建一個Boolean對象,並typeof _confirmOnApproval將返回「對象」:

var x = new Boolean(false); //Boolean object 
if(x) { 
    console.log("hello"); //This will always execute 
} 
var y = false; //Literal boolean primitive 
if(y) { 
    console.log("hello"); //This won't 
} 

你可以擺脫new Boolean,只是比較值:

if(_confirmOnApproval == "False") 
+0

啊,好吧,因爲新的布爾(「」)構造函數,在那種情況下,我應該如何實例化它?這將工作... var _confirmOnApproval = $('#hfConfirmOnApproval')。val()==「True」?真假; – WraithNath

+0

是的,這應該很好! –

+1

甚至只是var _confirmOnApproval =($('#hfConfirmOnApproval')。val()==「True」); – cspolton

0

我認爲問題是,它總是有一個值...嘗試拍攝的長度那個價值,那可能會起作用。

+0

布爾條件你的意思是,如果(_confirmOnApproval.Length = 4 ?確認('...'):是)它是一個布爾,所以它應該工作!? – WraithNath

0

asp:HiddenField ID屬性並不總是與input id屬性完全相同。

0

試試這個:

var _confirmOnApproval = $('input[type=hidden][id$=hfConfirmOnApproval]').val(); 

if (_confirmOnApproval === "False" ? confirm('Are you sure you want to approve this item?') : true) 
{ 

    // do work 

} 
1

或者詹姆斯的回答你必須改變你的現有代碼明確檢查像

var _confirmOnApproval = new Boolean($('#hfConfirmOnApproval').val()); 
if (_confirmOnApproval === true ? confirm('Are you sure you want to approve this item?') : true) 
{ 
    // do work 
} 
+0

謝謝,現在把它排序:) – WraithNath

相關問題