我在foreach中有这个代码,列出了唯一代码链接:
<a id="<?php echo $id_to ?>" href="<?php echo ADDRESS; ?>messageSent.php?id=<?php echo $id_to ?>" class="charcoal_link" style="line-height: 20px;" onclick="showMessageArea(this); return false;" >
<?php echo $uniqueCode1?><span class="pink_text"><?php echo $uniqueCode2?></span><?php echo $uniqueCode3?>
</a>
<form id="message_area" style="display:none" method="post" action="<?php echo ADDRESS; ?>messageSent.php?id=<?php echo $id_to ?>">
<textarea name="message" rows="10" cols="20"></textarea>
<input name="Submit" type="submit" value="Send"></input>
</form>
这是我查看页面源时得到的结果:
<a href="http://www-rainbowcode-mobi/messageSent.php?id=36" class="charcoal_link" style="line-height: 20px;" onclick="showMessageArea(this); return false;" >
KUZELJA<span class="pink_text">000</span>RC
</a>
<form id="message_area" style="display:none" method="post" action="http://www-rainbowcode-mobi/messageSent.php?id=36">
<textarea name="message" rows="10" cols="20"></textarea>
<input name="Submit" type="submit" value="Send"></input>
</form>
<a href="http://www-rainbowcode-mobi/messageSent.php?id=38" class="charcoal_link" style="line-height: 20px;" onclick="showMessageArea(this); return false;" >
ALANZIM<span class="pink_text">000</span>RC
</a>
<form id="message_area" style="display:none" method="post" action="http://www-rainbowcode-mobi/messageSent.php?id=38">
<textarea name="message" rows="10" cols="20"></textarea>
<input name="Submit" type="submit" value="Send"></input>
</form>
问题是当操作触发并且页面转到messageSent并且我再次查看页面源$id_to
不是我点击的链接的ID。无论我点击哪个链接,它都会占用第一个链接的ID?
这里是messageSent页面源(我点击了ID为38 NOT 36的链接):
我有一个print_r($_REQUEST)
,它给出了:
Array
(
[id] => 36
[message] => bj,nbgj,
[Submit] => Send
)
function showMessageArea(link)
{
var message_area = document.getElementById('message_area');
message_area.parentNode.removeChild(message_area);
link.parentNode.insertBefore(message_area, link.nextSibling);
message_area.style.display="block";
}
答案 0 :(得分:2)
问题确实是非独特的ID。
尝试将$to_id
附加到表单ID,以便它们是唯一的(例如<form id="message_area_<?php echo $to_id; ?>" ...
)。
然后更新showMessageArea
函数来执行此操作:
var message_area = document.getElementById('message_area_'+this.id);
这样您就可以使用所需的表单元素。
作为重构建议,我建议您使用单个表单,并将id
参数设为<input type='hidden' name='id' id='message_id' value=''>
,并将此值设置为showMessageArea(...)
,如下所示:
document.getElementById('message_id').value = this.id;
答案 1 :(得分:1)
在php语句之后你不应该有分号吗?
编辑:
我认为问题在于有两个id为“message_area”的元素,所以它总是引用第一个。尝试只有一个表单,并在单击其中一个链接时设置该表单的操作。
答案 2 :(得分:1)
我不知道这是否会解决,因为我看不到问题,但您可以尝试以下代码:
<a id="<?php echo $id_to ?>" href="<?php echo ADDRESS; ?>messageSent.php class="charcoal_link" style="line-height: 20px;" onclick="showMessageArea(this); return false;" >
<?php echo $uniqueCode1?><span class="pink_text"><?php echo $uniqueCode2?></span><?php echo $uniqueCode3?>
</a>
<form id="message_area" style="display:none" method="post" action="<?php echo ADDRESS; ?>messageSent.php?id=<?php echo $id_to ?>">
<textarea name="message" rows="10" cols="20"></textarea>
<input type="hidden" name="id" value="<?php echo $id_to ?>" />
<input name="Submit" type="submit" value="Send" />
</form>
然后尝试print_r($_POST)
编辑:
好的,在您的评论Helloise之后,我相信以下内容可能有效:
<a id="messageid_<?php echo $id_to ?>" href="javascript:void(0);" class="charcoal_link" style="line-height: 20px;" onclick="showMessageArea(this,'<?php echo $id_to ?>'); return false;" >
<?php echo $uniqueCode1?><span class="pink_text"><?php echo $uniqueCode2?></span><?php echo $uniqueCode3?>
</a>
<form id="message_area" style="display:none" method="post" action="<?php echo ADDRESS; ?>messageSent.php">
<textarea name="message" rows="10" cols="20"></textarea>
<input name="Submit" type="submit" value="Send" />
<input type="hidden" id="message_id" name="id" value="" />
</form>
<script type="text/javascript">
function showMessageArea(link,messageId)
{
document.getElementById('message_id').value=messageId;
message_area.parentNode.removeChild(message_area);
link.parentNode.insertBefore(message_area, link.nextSibling);
document.getElementById('message_area').style.display="block";
}
</script>
所以,这里的主要观点是如你所说的那样有一个表单,但是将我们正在使用的id传递给javascript函数。从那里,您可以设置隐藏输入的值,然后将其包含在POST值中。
答案 3 :(得分:1)
尝试这样的事情:
快速阅读之后......$
之前您遗失的ADDRESS
。它应该是$ADDRESS
。我假设这是一个变量(忽略这个,忽略它只是一个常量)你的错误的分号后面有很多行。
<a id="<?php echo $id_to; ?>"
href="<?php echo $ADDRESS;?>messageSent.php?id=<?php echo $id_to; ?>"
class="charcoal_link"
style="line-height: 20px;"
onclick="showMessageArea(this); return false;"
<?php echo $uniqueCode1;?>
<span class="pink_text">
<?php echo $uniqueCode2?>
</span>
<?php echo $uniqueCode3;?>
></a>
<form id="message_area" style="display:none" method="post" action="<?php echo $ADDRESS; ?>messageSent.php?id=<?php echo $id_to; ?>">
<textarea name="message" rows="10" cols="20"></textarea>
<input name="Submit" type="submit" value="Send"></input>
</form>