0

ユーザー名とメールアドレスを一覧表示した表があります。

<table>
    <tr>
        <th>Users</th>      
    </tr>
    <tr class="altrow">
        <td>admin &nbsp; <div style="visibility: hidden">admin@email.com</div></td>
    </tr>
    <tr>
        <td> User1 &nbsp;<div style="visibility: hidden">user1@email.com</div></td>
    </tr>
    <tr class="altrow">
        <td>User 2&nbsp;<div style="visibility: hidden">user2@email.com </div></td>
    </tr>
</table>

まず第一に、これが可視性を非表示に設定して電子メールを公開するための良い習慣であるかどうかはわかりませんが、この場合、セキュリティは問題ではありません。

主な問題は、ユーザー名またはその横にあるチェックボックスをクリックすると、次のボックスに表示される電子メールアドレスを偽装することです。

<input name="data[To]" type="text" id="To"/>

ここであなたの助けに本当に感謝します!

4

2 に答える 2

3

次のようなものが現在のマークアップで機能します(ただし、テーブルにIDを指定して選択する方がよいでしょう)。

$(document).ready(function() {
    $("table td").click(function() {
        $("#To").val( $(this).find("div").text() );
    });
});

つまり、任意tdのをクリックして、その中を見つけ、divそのコンテンツをに入れますinput。もちろん、これは、それぞれtdに単一のが含まれることを前提としていますdiv

デモ: http: //jsfiddle.net/hUXx4/

data-データをhtml5スタイルの属性に保存する傾向があります。例:

<td data-email="admin@email.com">admin</td>

...この場合、次のように使用します。

$("#To").val( $(this).attr("data-email") );
// OR
$("#To").val( $(this).data("email") );
于 2013-01-29T09:44:05.480 に答える
2

@nnnnnnの回答への追加のメモとして、これを使用した方がよいでしょう。

<td data-email="admin@email.com">

次に、jQueryのデータメソッドを使用して、コードを次のようにすることができます。

$(document).ready(function() {
    $("table td").click(function() {
        $("#To").val($(this).data("email"));
    });
});
于 2013-01-29T09:49:20.843 に答える