как отобразить все значения в строке, просто щелкнув только одно из значений в этой строке - PullRequest
0 голосов
/ 28 июля 2011

Ситуация такова, что, когда я нажимаю на строку, она направляет меня на «страницу просмотра», или нажатие «кнопки обновления» направляет меня в «окно обновления».Теперь я хочу, чтобы кнопка удаления и обновления находилась в одной строке со значениями имени и адреса.

Я попытался выровнять ее, и нет проблем с нажатием строки, она направляет меня на «страницу просмотра»но каждый раз, когда я нажимаю «кнопку обновления», появляется два окна, то есть «окно просмотра» и «окно обновления», в которых должно появляться только «окно обновления».

так, как я могу сделать так, чтобы страница обновления не влияла на страницу просмотра.

вот изображение ссылки моей работы:

(это еще не выровнено, потому что когда я пытаюсьпроблема выше) http://www.fileden.com/files/2011/7/27/3174077/My_Documents/a.JPG

Вот его код:

<link href="main.css" rel="stylesheet" type="text/css" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Principal Page</title>

<script type="text/javascript">

function pop_up(id) {
var newWind = window.open( "view_principal.php?id="+id, "myWindow", 
"status = 1, height = 200, width = 400, resizable = 0" );
}

function goModify(id)
{
window.location.href = "modify_principal.php?id=" + id;
}

function goDelete(id)
{
var answer = confirm ("Are you sure you want to delete?")

if (answer)
   window.location.href = "delete_principal.php?id=" + id;
}

function ChangeColor(tableRow, highLight)
{
if (highLight)
{
  tableRow.style.backgroundColor = '#66CCFF';
}
else
{
 tableRow.style.backgroundColor = '#69F';
}

 }

 function DoLink(theUrl)
{
document.location.href = theUrl;
}

</script>



</head>

<body>

<p>
<?php
require_once ('include/config.php');
require_once ('include/opendb.php');
$query = mysql_query("SELECT * FROM principal");
echo "</br>";
echo "<br>";
echo "<div class='divMainTable'>";
echo "<table border='1' >
  <tr class = 'headertable'>
    <th width = '200'> Name</th>
    <th> Address</th>
 </tr>";

while($row = mysql_fetch_array($query)){
echo "<tr onclick = 'pop_up($row[principal_ID])');return false;'      onmouseover='ChangeColor(this, true);' onmouseout='ChangeColor(this, false);'>";


echo "<td>".$row['name']."</td>";
echo "<td>".$row['address']."</td>"; 

echo "</tr>";
echo "</table>";
echo "</div>";

echo "<div class='divSecondTable'>";
echo "<table class='updatetable' border='1'>";
echo "<tr class='dataTable'>";
echo "<td align='center'>"."<input type='button' name='update' value='Update' 
onClick='goModify($row[principal_ID])');>"."</td>";

echo "<td align='center'>"."<input type='button' name='delete' value='Delete' 
onClick='goDelete($row[principal_ID])');>"."</td>";
echo "</tr>";
echo "</table>";
echo "</div>";

}



?>

<form id="form1" name="form1" method="post" action="add_principal.php">
<p class="add_option">
<input type="submit" name="add" id="button" value="ADD" />
</p>
</form>
</body>
</html>

1 Ответ

0 голосов
/ 28 июля 2011

Причина, по которой всплывают оба окна, связана с пузырьками событий. Событие во входном теге инициируется, затем происходит событие в теге tr.

Вам нужно остановить распространение с

event.stopPropagation()

в ваших функциях. На самом деле это проще сделать, если вы связываете свои события в своем скрипте, а не пишете встроенные обработчики событий.

UPDATE:

В вашем примере, поскольку вы передаете аргументы, вам также необходимо передать объект события.

Таким образом, для встроенного события необходимо добавить событие к аргументам и должно выглядеть так:

<input type="button" name="update" value="Update" onClick="goModify(event, $row[principal_ID]);">

тогда в вашей функции вам нужно принять событие, чтобы ваша функция стала:

function goModify(event, id)
{
    event.stopPropagation();
    event.cancelBubble = true; // for ie
    window.location.href = "modify_principal.php?id=" + id;
}

Вы бы сделали то же самое для кнопки удаления и функции js.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...