2

我有一个简单的表单,当按下提交按钮时,它会触发一个查询数据库并返回一些基本文本的 jquery AJAX 请求。

它工作正常,但我想要做的是让输入按钮也提交表单,这看起来很容易,但它不适合我。

下面是表格:

    <form method="post" action="" name="statusform" id="statusform">
        <fieldset id="quote_reference">
            <legend>Check Quote Status:</legend>
            <div id="enter_ref_div">
                <br />
                <br />
                <br />
                <br />                  
                <label for="reference" accesskey="R">Your Reference Number:</label>
                <input name="ref" id="ref" type="text" size="5" value="" /> <br /><br />
                <button type="button" id="checkStatus" class="calc_btn">Check Status</button><div id="loader"><img class="loader_gif" src="assets/ajax-loader.gif" /></div>
            </div>
        </fieldset>
        <fieldset id="quote_status_div">
            <legend>Your Quote Status:</legend>     
            <div id="status_result"></div>
        </fieldset>
    </form>

下面是按下按钮时触发的 jquery 函数,效果很好

$('#checkStatus').click(function() {

    var refNo = $("#ref").val();

    $('#loader').fadeIn('fast');

    $.ajax({
        type: "POST",
        url: "functions/functions.php",
        data: "ref_no="+ refNo,
        success: function(data){
            $('#loader').fadeOut('fast');
            $('#quote_reference').slideUp('fast');
            $('#status_result').html(data);
            $('#quote_status_div').slideDown('fast'); 
        }
    });     


});

现在我要做的就是在按下的返回/输入键上模仿上述功能。下面是我正在尝试的代码:

$(document).keypress(function(event){

var keycode = (event.keyCode ? event.keyCode : event.which);

    if(keycode == '13'){

        var refNo = $("#ref").val();

        $('#loader').fadeIn('fast');

        $.ajax({
            type: "POST",
            url: "functions/functions.php",
            data: "ref_no="+ refNo,
            success: function(data){
                $('#loader').fadeOut('fast');
                $('#quote_reference').slideUp('fast');
                $('#status_result').html(data);
                $('#quote_status_div').slideDown('fast'); 
            }
        });     
    }

});

我在互联网上找到的所有信息都告诉我这应该有效。你能帮我解释一下吗?

谢谢

4

3 回答 3

0

更改按钮以提交并使用提交方法。

$('#checkStatus').submit(function() {
  // do ajax call here
  // ...
  return false;
}))

不要忘记:return false阻止发送

于 2012-10-08T16:09:02.733 回答
0

试试这个方法..当你按下回车时触发点击事件..不需要再次编写代码..

$(document).keypress(function(event){
   event.preventDefault();
   var keycode = (event.keyCode ? event.keyCode : event.which);
    if(keycode == '13'){

       $('#checkStatus').click();
    }
});

发出警报并检查按下回车键时是否看到该警报。检查控制台部分中的任何错误。

还尝试使用 .on() 将事件附加到您的元素..

$(document).on('keypress' ,function(event){

$('#checkStatus').on('click' , function() {
于 2012-10-08T16:11:31.610 回答
0

您需要做的一件事是调用 event.PreventDefault() 如果您想阻止表单正常提交,请在检查它是否是 enter 键后调用。

于 2012-10-08T16:13:40.023 回答