誰もがこのjs/jQueryで何か問題を見ることができますか?

私は、次のスクリプトを使用して、システム設定に応じてボタンをクリックすることを確認するよう求めます。

システム設定は、コードの背後にある隠しフィールドセットに格納されます。

マークアップ:


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は現在偽です

溶液:

js:

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

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

5 答え

これは、ブールオブジェクトを作成するために新しいブール値を使用し、 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
}

新しいブール値を取り除いて、値を比較するだけです:

if(_confirmOnApproval == "False")
2
追加された
うん、うまくいくはずです!
追加された 著者 James Allardice,
ああ、そう新しいブール( "")コンストラクタのため、その場合はどのようにインスタンス化する必要がありますか?これは動作しますか?var _confirmOnApproval = $( '#hfConfirmOnApproval')。val()== "True"?真偽;
追加された 著者 WraithNath,
または単にvar _confirmOnApproval =($( '#hfConfirmOnApproval')。val()== "True");
追加された 著者 cspolton,

ジェームズの答えではなく、ブール条件を明示的にチェックするように既存のコードを変更する必要があります。

var _confirmOnApproval = new Boolean($('#hfConfirmOnApproval').val());
if ( _confirmOnApproval === true ? confirm('Are you sure you want to approve this item?') : true ) 
{
   //do work
}
1
追加された
ありがとう、それは今ソート:)
追加された 著者 WraithNath,

asp:HiddenField ID 属性は input id 属性と必ずしも同じではありません。

0
追加された

私は問題は、それは常に価値があるということだと思う...その価値の長さを取ってみて、それはおそらく動作します。

0
追加された
(_confirmOnApproval.Length = 4?confirm( '...'):true)boolなので、うまくいくはずですか?
追加された 著者 WraithNath,

これを試して:

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

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

   //do work

}
0
追加された
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript