如何使Ajax JavaScript在按回车键时工作


how to make ajax javascript work on press of enter key

<script type='text/javascript'>//<![CDATA[ 
$(window).load(function(){
$(document).ready(function() {
    $("input[name='search_user_submit']").click(function() {
        var cv = $('#newInput').val();
        var cvtwo = $('input[name="search_option"]:checked').val();
        var data = { "cv" : cv, "cvtwo" : cvtwo }; // sending two variables
        $("#SR").html('<img src="loading.gif"/>').show();
        var url = "user.php";
        $.post(url, data, function(data) {
            $("#SR").html(data).show();
        });
    });
});
});//]]>  
</script>

当我按下按钮时,这工作正常,但是当我按回车键时,所有变量及其值都会显示在地址栏中。

那么我如何为此目的添加按键事件:-

我已经尝试了此代码进行按键仍然不起作用:-

<script type="text/javascript">
$(window).load(function(){
    $(document).ready(function() {
    function Script(e) {
        if (e.keyCode == 13) {
             var cv = $('#newInput').val();
            var cvtwo = $('input[name="search_option"]:checked').val();
            var data = { "cv" : cv, "cvtwo" : cvtwo }; // sending two variables
            $("#SR").html('<img src="loading.gif"/>').show();
            var url = "user.php";
            $.post(url, data, function(data) {
                $("#SR").html(data).show();
            });
        }
    }
    });
});
</script>

同样对于按键,我正在单击选项按钮创建文本框,在我的 javascript 中我指定了以下内容:-

input.onkeypress = 'return Script(event)';

您应该使用表单,并具有onsubmit事件,而不是处理 Enter 键。

<form id="myform">
    <!-- ... -->
    <input type="submit">
</form>
<script>
document.getElementById("myform").onsubmit = function (ev) {
    ev.preventDefault();
    // ...
}
</script>

没有进行错误检查,但希望你明白这个想法。

我想执行 ajax 调用并在输入时老虎

按钮

试试这个

<script type='text/javascript'>//<![CDATA[ 
$(window).load(function(){
$(document).ready(function() {
    $("input[name='search_user_submit']").keyup(function(event){
    if(event.keyCode == 13)
{

        var cv = $('#newInput').val();
        var cvtwo = $('input[name="search_option"]:checked').val();
        var data = { "cv" : cv, "cvtwo" : cvtwo }; // sending two variables
        $("#SR").html('<img src="loading.gif"/>').show();
        var url = "user.php";
        $.post(url, data, function(data) {
            $("#SR").html(data).show();
}
        });
    });
});
});//]]>  
</script>

为了回答您的问题,我认为按 Enter 是将表单发送到浏览器,并且它必须是将操作设置为 GET 的表单(或什么都没有,默认为 GET)。这会导致浏览器刷新,表单变量在 URL 中显示为查询字符串。浏览器刷新会阻止脚本真正执行(或者在页面重新加载时执行脚本,因此您看不到它)。

如果e.preventDefault()是否Script(),这将阻止发生该默认操作。

[编辑] 戈帕尔刚刚击败了我,给出了几乎相同的答案。

我确实想补充一点,jQuery处理事件绑定和其他东西,也许为了更好的流程,你可以function Script(e)

$('input').keypress(function(e) {
    if (e.keyCode == 13) {
        e.preventDefault();
        var cv = $('#newInput').val();
        var cvtwo = $('input[name="search_option"]:checked').val();
        var data = { "cv" : cv, "cvtwo" : cvtwo }; // sending two variables
        $("#SR").html('<img src="loading.gif"/>').show();
        var url = "user.php";
        $.post(url, data, function(data) {
            $("#SR").html(data).show();
        });
    }
});

然后你就不需要input.onkeypress = 'return Script(event)';任何地方。 jQuery有一个像.keypress()这样的函数(参见jQuery的按键),几乎可以处理任何事件,你甚至可以使用.bind()来绑定多个事件。请参阅文档以了解更多信息。