4

ユーザーがマウスオーバーしたときに、Javascript を介して ImageButtons の ImageUrl を変更しています。送信時に ImageUrl プロパティを調べたいと思います。ただし、変更されたプロパティは分離コードには反映されません。実は私もjavascript経由でspanタグを更新しており、その値の変更もポストバックに反映されていません。これらはすべて静的な html 要素です。私はこれらを動的に作成しておらず、コードビハインドでそれらを操作していません。

HTML :

            <div style="margin: 20px 0 0 0; float: left;">
        <div class="divStars1" style="width: 130px; float: left;">
            <input type="image" name="ctl00$MainContent$ax1" id="MainContent_ax1" class="stars" onmouseover="<code to flip image>" src="style/EmptyStar.png" style="height:20px;width:20px;" />
            <input type="image" name="ctl00$MainContent$ax2" id="MainContent_ax2" class="stars" onmouseover="<code to flip image>" src="style/EmptyStar.png" style="height:20px;width:20px;" />
            <input type="image" name="ctl00$MainContent$ax3" id="MainContent_ax3" class="stars" onmouseover="<code to flip image>" src="style/EmptyStar.png" style="height:20px;width:20px;" />
            <input type="image" name="ctl00$MainContent$ax4" id="MainContent_ax4" class="stars" onmouseover="<code to flip image>" src="style/EmptyStar.png" style="height:20px;width:20px;" />
            <input type="image" name="ctl00$MainContent$ax5" id="MainContent_ax5" class="stars" onmouseover="<code to flip image>" src="style/EmptyStar.png" style="height:20px;width:20px;" />

        </div>
        <div style="margin-top: 3px; width: 600px; float: left;">
            <span>axs</span>
        </div>
    </div>
    <div style="margin: 20px 0 0 0; float: left;">
        <div class="divStars2" style="width: 130px; float: left;">
            <input type="image" name="ctl00$MainContent$bx1" id="MainContent_bx1" class="stars" onmouseover="<code to flip image>" src="style/EmptyStar.png" style="height:20px;width:20px;" />
            <input type="image" name="ctl00$MainContent$bx2" id="MainContent_bx2" class="stars" onmouseover="<code to flip image>" src="style/EmptyStar.png" style="height:20px;width:20px;" />
            <input type="image" name="ctl00$MainContent$bx3" id="MainContent_bx3" class="stars" onmouseover="<code to flip image>" src="style/EmptyStar.png" style="height:20px;width:20px;" />
            <input type="image" name="ctl00$MainContent$bx4" id="MainContent_bx4" class="stars" onmouseover="<code to flip image>" src="style/EmptyStar.png" style="height:20px;width:20px;" />
            <input type="image" name="ctl00$MainContent$bx5" id="MainContent_bx5" class="stars" onmouseover="<code to flip image>" src="style/EmptyStar.png" style="height:20px;width:20px;" />
        </div>
        <div style="margin-top: 3px; width: 600px; float: left;">
            <span>bx blah blah</span>
        </div>
    </div>

Javascript:

        $(document).on("mouseover", "input.stars", function () {
        var score = 0;
        $("input.stars").each(function (index, element) {
            // element == this
            if ($(element).attr("src") == "style/FilledStar.png") {
                score = score + 1;
            };
        });
        score = score / 5;
        var n = score.toFixed(2);
        $("#MainContent_lblScore").text(n);
    });

btnSubmit_Click コード:

        For Each ctrl As Control In Me.divSkill1.Controls
        If (TypeOf ctrl Is ImageButton) Then
            Dim imgCtl As ImageButton = TryCast(ctrl, ImageButton)
            Dim x As String = imgCtl.ImageUrl 'HERE'S THE PROBLEM... x always equals original static value!
        End If

    Next
4

2 に答える 2

7

サーバーは、このタイプのコントロールのクライアント側での変更について何も知りません。おそらく、javascript によって変更された値を隠しフィールドまたは隠しテキスト ボックスに保存し、サーバー側でこの値を収集する必要があります。

お役に立てれば

編集:

var n の値のみを取得したい場合は、次のようにすることができます。

// aspx;

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

/// ジャバスクリプト

$(document).on("mouseover", "input.stars", function () {
    var hid=$("#<%= HidScore.ClientID %>");


        var score = 0;
        $("input.stars").each(function (index, element) {
            // element == this
            if ($(element).attr("src") == "style/FilledStar.png") {
                score = score + 1;
            };
        });
        score = score / 5;
        var n = score.toFixed(2);
        $("#MainContent_lblScore").text(n);

    hid.val(n);
    });

次に、vb.net で値を取得します: HidScore.value

于 2013-10-17T22:17:53.690 に答える
5

サーバー側のコントロールに対するクライアント側の変更は、通常は保存されず、サーバーに戻されません。

隠しフィールド<asp:HiddenField />コントロールを作成し、JavaScript でその値も更新することを検討してください。HiddenFields/ <input type="hidden" />PostBack でサーバーに返されます。次に、コードで変更または更新の可能性を調べ、それらの変更をプロパティHiddenFieldにルーティングする必要があります。ImageButton ImageUrl

于 2013-10-17T22:24:34.490 に答える