2

アプリケーションに登録されているユーザーのリストがあります。管理者には、登録されているユーザーを削除するオプションがあります。PHPを使用してデータベースからリストを作成しています。

したがって、このリスト内のすべてのユーザーは、すべてのユーザーを含むこのテーブルの tr 行を取得します。右側の列には、このユーザーの表で管理者だけが見るボタンがあり、管理者はその「削除」ボタンをクリックしてその特定のユーザーを削除できます。

正常に動作している削除が発生する前に、管理者に「システムから「空白」を削除してもよろしいですか? 空白には、管理者が削除ボタンをクリックしたユーザーの名前が入ります。

現在、削除ボタンに添付された非表示の入力フィールドにユーザーの名前があります。つまり、その文に名前が出てきますが、問題は、リストの最初の人の同じ名前がユーザーリストの削除ボタンのいずれかをクリックすると表示されます。明確にするために、削除は正しいユーザーに対して行われているため、削除したいユーザーを削除します。確認アラートの名前は常に最初のユーザーの名前で表示されます。

これはjqueryコードの書き方に問題があると思うので、これに関する支援があれば大歓迎です。しばらくの間、これについてオンラインで答えを見つけようとしています。

つまり、要約すると、ページにいくつかの「フォーム」があります(つまり、削除したいユーザーの非表示の入力情報を含む「フォーム」を引き起こす「削除」ボタンを意味します。バックエンドがどのユーザーを削除するかを知るためです。)

削除機能は正常に機能しています-目的のユーザーを削除します。

ただし、メッセージ内のユーザーの名前はユーザーごとに変更されず、ユーザー リストの最初のユーザーの名前が常に取得されるため、アラート機能は管理者に必要なメッセージを入力しません。

ユーザーリストのコードは次のとおりです。

<table class="table table-striped table-bordered">
            <thead class="dark_grey">
                <th>ID</th>
                <th>Name</th>
                <th>Email</th>
                <th>Created At</th>
                <th>User Level</th>
                <th>Actions</th>
            </thead>
            <tbody>
                <?php

                    foreach ($user_rows as $row) 
                    {
                        echo "<tr>";

                            echo "<td>{$row['id']}</td>";
                            echo "<td><a href='/ci/user/user_profile/?={$row['id']}'>{$row['first_name']} {$row['last_name']}</a></td>";
                            echo "<td>{$row['email']}</td>";
                            echo "<td>{$row['created_at_time']}". " " ."{$row['created_at_date']}</td>";
                            if($row['user_level'] != '9')
                            {
                                $row['user_level'] = 'normal';
                                echo "<td>{$row['user_level']}</td>";
                            }
                            else
                            {
                                $row['user_level'] = 'admin';
                                echo "<td>{$row['user_level']}</td>";
                            }
                            echo "<td class='last_td'>
                                    <form class='float_left' action='/ci/user/edit_user' method='post'>
                                        <input type='hidden' name='email' value='{$row['email']}'/>
                                        <input class='btn btn-success' type='submit' value='Edit' />
                                    </form>
                                    **<form class='delete' action='/ci/user/delete_user' method='post'>
                                        <input type='hidden' name='email' value='{$row['email']}'/>
                                        <input type='hidden' name='name' value='{$row['first_name']} {$row['last_name']}' />
                                        <input class='btn btn-danger' type='submit' value='Delete' />
                                    </form>**
                                  </td>";
                        echo "</tr>";
                    }


                ?>

            </tbody>
        </table>

jqueryコードは次のとおりです。

<script type="text/javascript">
   $(document).ready(function () {
      $('.delete').submit(function () {
          var name = $('input[name="name"]').val();
          alert("Are you sure you would like to delete " + name + " from the system?");
          return false; //I just have this here so the delete didn't take place when testing the alert function.
      });
  });
</script>

したがって、現在クリックされている (".delete") にアラートを出す必要があることはわかっていますが、 $(this) を使用しようとすると、実際には機能しませんでした。間違った使い方をしていた可能性が非常に高いです。誰かがjqueryを記述して、現在クリックされている「削除」ボタンの非表示の入力名の値をメッセージで取得できる正しい方法を教えてくれれば、それは素晴らしいことです!

よろしくお願いします。

4

2 に答える 2

3

のようにセレクターを特定する必要があります$(this).find('input[name="name"]').val()

試す:

 $('.delete').submit(function(){
      var name = $(this).find('input[name="name"]').val();
      alert("Are you sure you would like to delete " + name + " from the system?");

      return false; //I just have this here so the delete didn't take place when testing the alert function.
 });

これを行う$('input[name="name"]').val()と、複数に一致するinput name=nameため、jquery メソッドval()はコレクション内の最初の要素のみの値を返すため、表示されている動作になります。

val()これはjqueryコードのスニペットです

   val: function( value ) {
    var ret, hooks, isFunction,
        elem = this[0]; //<--- It just takes first element in the collection

    if ( !arguments.length ) {
        if ( elem ) {
    ...........
于 2013-10-15T20:26:17.723 に答える
0

私はついに私の質問に対する答えを見つけたと思います:

機能したjqueryコードは次のとおりです。

<script type="text/javascript">
    $(document).ready(function(){


        $('.delete').submit(function(){
            var name = $(this).find('input[name="name"]').val();
            alert("Are you sure you would like to delete " + name + " from the system?");
        });

    });
</script>

この投稿を見つけた後、答えを得ました: jQuery get value from hidden input in column

ご協力ありがとうございます。:)

于 2013-10-15T20:36:22.803 に答える