<div class="comentPub" id="comentPub_<?php echo $pub_id;?>">
<div id="comentPub_content">
<img onclick="close_coment_box(<?php echo $pub_id; ?>)" src="imagens/x.png" style="width: 10px; height: 10px; float: right; margin-right: 10px;"/><br/>
<a href="perfil.php">
<img src="<?php echo $imageDirectory;?>" style="width: 25px; height: 25px;">
</a>
<textarea name="usercoment" class="comentBox" id="comentBox_<?php echo $pub_id;?>" placeholder="Escreve um comentário..." onkeypress="keypressed(this.id, <?php echo $userID;?>, <?php echo $pub_id;?>)"></textarea><br/
//这是我想要获得价值并验证关键功能的文字
<li style="background: #ddd; font-size: 0; height: 1px; line-height: 0; width: 350px; float: left;"></li>
<?php
$comentarios = "SELECT * FROM comentPub WHERE pubID = '$pub_id'";
$comentarios_query = mysql_query($comentarios, $liga);
while ($row4 = mysql_fetch_array($comentarios_query)){
$userComentID = $row4['userID'];
$coment = $row4['coment'];
$comentID = $row4['comentID'];
$getUserComentData = "SELECT * FROM perfis WHERE id='$userComentID'";
$getUserComentData_query = mysql_query($getUserComentData, $liga);
while ($row5 = mysql_fetch_array($getUserComentData_query)){
$userComentImage = $row5['imagem'];
$nome = $row5['nome'].' '.$row5['apelidos'];
}
}
?>
</div>
</div>
^ 这是我的HTML页面,现在我的JS功能
function keypressed(textareaID, comentUserID, pubID){
var textareaID = "#" + textareaID;
$(textareaID).keydown(function(e){
if(e.shiftKey && e.keyCode == 13){
var txt = $(textareaID);
txt.val(txt.val());
} else if (e.keyCode == 13) {
e.preventDefault();
var userComent = $(textareaID).val();
$.post("comentar_pub.php", {coment: userComent, user: comentUserID, pub: pubID});
$(textareaID).attr("value", "");
}
});
}
现在,如果您执行此操作,它将执行多次&#34; $。发布(&#34; comentar_pub.php&#34;,{coment:userComent,user:comentUserID,pub:pubID}); &#34;并在DB上插入多个线路。如果您尝试更改内部代码&#34; e.keyCode == 13&#34;警告(&#34; 1&#34;);警报(&#34; 2&#34;);&#34;,你可以看到更好的效果。请帮助
答案 0 :(得分:0)
它的一个代码跟踪......无论如何,你的问题是你在onkeypress
+ textarea
+中添加了你添加的函数keypressed()
中的代码另一个事件监听器$(textareaID).keydown()
到同一个元素......你可以看到它的发展方向。
这里要注意的是jquery keydown
在事件监听器中添加,并不替换现有的keydown。因此,每次onkeypress
被触发时,您都会向$(textareaID).keydown()
元素添加另一个$(textareaID)
事件操作(您传递给事件的匿名函数)。
在每个按键上添加一个事件监听器,当keydown触发时,帖子的执行时间是onkeypress
上textarea
被触发的X次。
删除$(textareaID).keydown()
事件添加并在其中运行代码,您应该设置...如果我正确理解它应该如何工作。
编辑:所以代码应该是
<textarea name="usercoment" class="comentBox" id="comentBox_<?php echo $pub_id;?>" placeholder="Escreve um comentário..." onkeypress="keypressed(event, this, <?php echo $userID;?>, <?php echo $pub_id;?>)"></textarea>
和JS
function keypressed(e, textareaDOM, comentUserID, pubID){
if (!e) var e = window.event;
var txt = $(textareaDOM);
if(e.shiftKey && e.keyCode == 13){
txt.val(txt.val());
} else if (e.keyCode == 13) {
e.preventDefault();
var userComent = txt.val();
$.post("comentar_pub.php", {coment: userComent, user: comentUserID, pub: pubID});
txt.attr("value", "");
}
}
请注意! - 因为keypressed
函数是通过正常事件而不是jQuery事件触发的,所以我不记得e.shiftKey
是否真的有效,如果我没记错的话你还需要分别听取转换。但我会把它留给你!