2009-05-28 10 views
1

ajaxコントロールツールキットの最新リリースでcolorpickerextenderの対象となるテキストボックスを非表示にする方法はありますか?ColorPickerExtenderをターゲットとするテキストボックスを隠す

テキストボックスに

style="display:none"
を追加すると、カラーピッカーがブラウザウィンドウの左上隅に表示されます。私はそれがextender popupbuttonidで参照されているボタンの近くに表示されるようにしたい。

私はユーザーにカラーコードを見せたくないので、テキストボックスを非表示にしたいと思います。

答えて

2

私はそれを隠さなかったが、私が望むものを得る別の方法を見つけた。 色を選択すると、テキストボックスからカラーコードを取得して非表示フィールドに格納し、テキストボックスのテキストをクリアし、最後にテキストボックスの背景色を選択した色に設定するjavascript関数を呼び出します。ここで

は、ASPXコードです:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="color.aspx.cs" Inherits="color" %> 

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title></title> 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script> 

<script type="text/javascript"> 
    function ColorSelectionChanged() { 
     var txtColorPickerSelector = '#' + txtColorPickerID; 
     var ColorCodeSelector = '#' + ColorCodeID; 
     var colorCode = '#' + $(txtColorPickerSelector).val(); 
     $(txtColorPickerSelector).val('').css('background-color', colorCode); 
     $(ColorCodeSelector).val(colorCode); 
    }   
</script> 

</head> 
<body> 
<form id="form1" runat="server"> 

<asp:HiddenField ID="ColorCode" runat="server" /> 

<asp:ScriptManager ID="ScriptManager1" runat="server" /> 

<asp:TextBox ID="txtColorPicker" runat="server" Width="2em"></asp:TextBox> 

<cc1:ColorPickerExtender ID="txtColor_ColorPickerExtender" runat="server" 
    TargetControlID="txtColorPicker" 
    OnClientColorSelectionChanged="ColorSelectionChanged" /> 

&nbsp;<asp:Button ID="btnSubmit" runat="server" OnClick="btnSubmit_Click" Text="Submit" /> 

<asp:Label ID="lblColorCode" runat="server"></asp:Label> 
</form> 
</body> 
</html> 

<script type="text/javascript"> 
    var txtColorPickerID = '<%=txtColorPicker.ClientID %>'; 
    var ColorCodeID = '<%=ColorCode.ClientID %>';  
</script> 

そして、背後にあるコード:

using System; 
using System.Drawing; 

public partial class color : System.Web.UI.Page 
{ 
    protected void btnSubmit_Click(object sender, EventArgs e) 
    { 
     lblColorCode.Text = ColorCode.Value; 
     txtColorPicker.BackColor = ColorTranslator.FromHtml(ColorCode.Value); 
    } 
} 

私はカラーコードが送信されていることを証明するラベルにコードを割り当てます。 aspxフォーマットをおかしかったです。 Chrome、IE 6、IE 7、Firefox 3、Opera 9、Safari 4で動作確認済みです。

+0

このソリューションは機能しますが、私は1つの問題に直面しています。初期段階では、ヘキサコードを示しています。これを解決するために私を助けてください。 –

0

前のコードはちょっと混乱しています。 私はそれをより明確にするために少し変更しました。

function ColorSelectionChanged() { 
    $get('<%=ColorCode.ClientID %>').value = '#' + $get('<%=txtColorPicker.ClientID %>').value 
    $get('<%=txtColorPicker.ClientID %>').value='' 
    $get('<%=txtMessage.ClientID %>').style.color = $get('<%=ColorCode.ClientID %>').value 
} 

とHTML部分txtMessageは、彼らが(チャットテキストボックスを想像して)上の書き込みをしようとしているtexboxある

<asp:ImageButton ID="ImageColor" runat="server" ImageUrl="~/_Images/cp_button.png" /> 
         <asp:TextBox ID="txtColorPicker" runat="server" width="0" style="border:0;" /> 
         <asp:HiddenField ID="ColorCode" runat="server" /> 
         <ajaxToolkit:ColorPickerExtender 
          ID="ColorPickerExtender1" 
          PopupButtonID="ImageColor" 
          TargetControlID="txtColorPicker" 
          PopupPosition="Right" 
          OnClientColorSelectionChanged="ColorSelectionChanged" 
          runat="server" 
          /> 

。あなたはそれが

フォーム背後コードだけで選択したカラーコードをretriveするColorCode.valueを使用する必要がいけない場合は、その行をコメントすることができます。

+0

あなたのコードでは、javascript関数ColorSelectionChangedは存在しますか? aspxページのheadタグ内で<%= ServerControl.ClientID%>を実行しようとすると、コントロールなどの追加に関するエラーが発生します。 –

関連する問題