0

javascriptでaa hrefタグとvalidateメソッドを持っています

私のaspxコードはこのように似ています

<a onclick="validate();" href="PopUpPage.aspx?KeepThis=true&TB_iframe=true&height=150&width=400"
      class="thickbox" id="AnchorImage" >
<img id="ColorImageButton" src="SiteImages.png" runat="server" />
</a>

リンクをクリックすると、シックボックスを検証して削除する必要があります

私のjavascriptはこのように似ています

function validate() {

if (document.getElementById('<%=ColorImageButton.ClientID%>').src.indexOf('Red.png') >= 0) {
             document.getElementById('AnchorImage').removeAttribute('href');
             document.getElementById('AnchorImage').removeAttribute('class');
         }
 }

そして、アンカータグ内の画像を変更するための2つのボタンがあります. ボタンを使用して設定された画像に基づいて、thickbox クラスを削除しています。Green.png の場合は、thickbox のポップアップ ウィンドウを表示する必要があります。Red.png の場合は、thickbox を削除または無効にする必要があります。

<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button"  />
    <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Button" />
protected void Button1_Click(object sender, EventArgs e)
{
    ColorImageButton.Src = "~/SiteImages/Red.png";
}
protected void Button2_Click(object sender, EventArgs e)
{
    ColorImageButton.Src = "~/SiteImages/Green.png";
}

ユーザーがアンカータグ内の画像をクリックするとvalidateが呼び出され、条件が満たされるとポップアップが表示されません。しかし、thickbox の黒い透明な画面がまだ表示されており、ユーザーはこれをクリックする必要があります。どうすればこれを解決できますか?

4

2 に答える 2

0

Thickbox.js のソース コードを見ると、キャンセルする方法がないため、手動で呼び出してみてください。

例:thickbox および href 属性をアンカーから削除します

<a onclick="validate(); return false;" href="#" id="AnchorImage">
    <img id="ColorImageButton" src="SiteImages.png" runat="server" />
</a>

検証関数で tb_show を呼び出して、必要に応じてシックボックスを表示します

function validate() {

    if (document.getElementById('<%=ColorImageButton.ClientID%>').src.indexOf('Red.png') >= 0) {
        // Do nothing
    } else {
       //tb_show(caption, url, imageGroup)
       tb_show(null, "PopUpPage.aspx?KeepThis=true&TB_iframe=true&height=150&width=400", false);
    }
}
于 2012-07-18T05:12:10.453 に答える