Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS-keydown在函数中执行多次_Javascript_Jquery_Html - Fatal编程技术网

Javascript JS-keydown在函数中执行多次

Javascript JS-keydown在函数中执行多次,javascript,jquery,html,Javascript,Jquery,Html,现在,如果执行该命令,它将多次执行“$.post”(“comentar_pub.php“,{coment:userComent,user:comentUserID,pub:pubID})”,并在数据库上插入多行。如果您尝试将“e.keyCode==13”中的代码更改为“alert(“1”);alert(“2”);”,则可以更好地看到效果。请提供帮助这是一个很难追踪的代码。。。无论如何,您的问题可能是您在函数keypressed()的textarea+中的onkeypress上触发了代码。您将另一

现在,如果执行该命令,它将多次执行“$.post”(“comentar_pub.php“,{coment:userComent,user:comentUserID,pub:pubID})”,并在数据库上插入多行。如果您尝试将“e.keyCode==13”中的代码更改为“alert(“1”);alert(“2”);”,则可以更好地看到效果。请提供帮助

这是一个很难追踪的代码。。。无论如何,您的问题可能是您在函数
keypressed()
textarea
+中的
onkeypress
上触发了代码。您将另一个事件侦听器
$(textareaID).keydown()
添加到同一元素中。。。你可以看到这是怎么回事

这里需要注意的是jquery
keydown
添加了事件监听器,而不是替换现有的keydown。因此,每次启动
onkeypress
时,都会向
$(textareaID)
元素添加另一个
$(textareaID).keydown()
事件操作(传递给事件的匿名函数)

在您添加的每个按键上,当按下键触发时,post将在
textarea
上执行
onkeypress

删除添加事件的
$(textareaID).keydown()
并在其中运行代码,您应该设置为。。。如果我正确理解了这应该如何工作

编辑:所以代码应该是

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", "");
       }
    });
}

注意因为
keypressed
函数是通过正常事件而不是jQuery事件触发的,所以我不记得
e.shiftKey
是否实际工作,如果我没记错的话,您仍然需要单独监听shift。但我会让你决定的

您的格式设置看起来像战后轰炸的城市场景。您尝试了
.keypress()
而不是
.keydown()
?看看
Jquery
,以及它如何帮助
低调的javascript
谢谢大家。Illimar Pihlamäe的答案解决了我的问题。所以你是说js函数应该是:function keypressed(textareaID,comentUserID,pubID){var textareaID=“#”+textareaID;if(textareaID.shiftKey&&textareaID.keyCode==13){var txt=$(textareaID);txt.val(txt.val())}如果(textareaID.keyCode==13){textareaID.preventDefault();var userComent=$(textareaID.val();$.post(“comentar_pub.php”,{coment:usercomentt,user:comentUserID,pub:pubID});$(textareaID.attr(“value”,“”);}@user3042700这是一个盲代码,因为我无法检查它…我们不想做一个测试senario。但这是编辑的第几行内容。@user3042700在另一个注释中,我在您的SQL中看到,您将代码留给数据注入(或者可能只是像我看到的代码片段中的那样)@user3042700您知道最好在文本区域中添加一个jquery事件监听器,类似于
$('#comentBox'.keypress(函数(e){keypressed(e,this.id,);})
然后您可以或多或少地使用您的原始代码。当然,您需要从文本区域中删除
onkeypress
事件。@user3042700这是为了工作,还是我应该试着为您制作一个全功能的测试用例?PS如果我之前对您有点粗鲁,我很抱歉,我刚刚得到消息说我有一个2w工作的1w截止日期我想我是拿你出气的。
<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>
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", "");
       }
    });
}
<textarea name="usercoment" class="comentBox" id="comentBox_<?php echo $pub_id;?>" placeholder="Escreve um coment&aacute;rio..." onkeypress="keypressed(event, this, <?php echo $userID;?>, <?php echo $pub_id;?>)"></textarea>
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", "");
    }
}