アプリケーションに登録されているユーザーのリストがあります。管理者には、登録されているユーザーを削除するオプションがあります。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を記述して、現在クリックされている「削除」ボタンの非表示の入力名の値をメッセージで取得できる正しい方法を教えてくれれば、それは素晴らしいことです!
よろしくお願いします。