2013-10-15 3 views
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 "), но когда я попытался использовать $ (это), это не сработало. Очень возможно, я использовал это неправильно. Если кто-то может показать мне правильный способ написать jquery, чтобы получить текущее нажатое значение «удалить» кнопки в имени сообщения в сообщении, которое было бы здорово!

Заранее благодарим за вашу помощь!

ответ

3

Вам нужно сделать свой селектор конкретным, как $(this).find('input[name="name"]').val().

Try:

$('.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) { 
    ........... 
+0

О, ничего себе! Спасибо за это! – Hershy

+0

@ user2884001 Он должен работать? Сделал это? – PSL

+0

Я только видел ваш ответ после написания моего ответа, очень благодарен! Спасибо – Hershy

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

Спасибо за вашу помощь stackoverflow! :)

Смежные вопросы