2011-11-09 9 views
0

これまでオンラインで解決策を探してきましたが、これを行う方法は多少異なりますが、完全な解決策を見つけることができませんでした。だから助けてください!javascriptクラスをasp:buttonコントロールに変更してサーバー側で利用できない

私はユーザーがオンラインで記入するフォームを持っています。フォームの一箇所で、入力に関連付けるキーワードを選択します。私はボタンの各キーワードでボタンのテーブルレイアウトを作成しました。

<asp:Button 
    ID="button1" 
    Text="Kid Friendly" 
    CssClass="button_off" 
    runat="server" 
    onclientclick="change_select(this);" 
    OnClick="return false;" > 
</asp:Button> 
<br /> 
<asp:Button 
    ID="button2" 
    Text="Romantic" 
    CssClass="button_off" 
    runat="server" 
    onclientclick="change_select(this);" 
    OnClick="return false;" > 
</asp:Button> 
<br /> 

などです。 ボタンの背景は青です。ユーザーがボタンをクリックすると、javascriptが実行されてボタンのクラスが変更され、背景が緑色に変わります。

function change_select(objs) 
{ 
    var mydoc = objs.className; 
    if (mydoc == "button_off") 
    { 
     objs.className = "button_on"; 
     document.getElementById("button1").setAttribute("SkinID", "3"); 
    } 
    else 
    { 
     objs.className = "button_off"; 
    } 
} 

が続いて下部に、私は情報提出するボタンを持っている:私はページをテストする場合

<asp:Button ID="button4" Text="Verify" runat="server" onclick="verify" > 

、ボタンをクリックすると、クラスを変更し、背景は前後に変更したが私は、サーバー側の各要素のクラスを取得しようとすると、常に "button_off"として戻ってきます。

protected void verify(object sender, EventArgs e) 
{ 
    var myValue = button1.CssClass.ToString(); 
    string myInfo = "<h3>Your buttons</h3><p>Here is the class: " + myValue; 

    myResults.InnerHtml = myInfo.ToString() 
} 

サーバー側のC#は、ユーザーがクラスを変更したことをどのように取得できますか?これらをHTML要素のKid Friendlyに変更しようとしましたが、サーバー側でHTML要素を参照する方法を理解できませんでした。 HTMLElementを参照するコードを持つ領域の投稿を見つけましたが、そのコードは自分の開発マシンでは機能しませんでした。

はい、キーワードラベルを作成して各ラベルの横にチェックボックスを追加するだけでも問題ありません。私はここでもっと面白いインターフェースを作ろうとしていました。助けてください!

答えて

1

提出時にcssクラスを非表示フィールドに保存してください。

+0

ボタンクリックイベントのためにページがポストバックすると、要素は通常のCssClass状態に戻ります。だから、あなたは新しいクラスを保存するために別のものを使う必要があります。提案された隠されたフィールド、またはクッキー/セッション/その他のもの。 – Graham

+0

はい、私もそれについて考えました。各ボタン要素に非表示のフィールドを追加し、そこに値を格納しますが、それは多くのコードのようです。チェックボックスをボタンのように見せるjqueryのボタンウィジェットを見るように言った人もいます。それはおそらく私の答えだろうと思う。 – mgordon12

関連する問題