jquery load函数在keypress函数内不起作用

时间:2014-04-29 00:47:04

标签: javascript jquery

我遇到了问题。我有这个简单的HTML代码。

<form name="myform" method="POST" action="">
    <div>
        <p>
            <input id="query" type="text" size ="60" title="Enter your search string here." style="font-size:12px;" />
            <input id="startSearch" type="button" value="Search Resource" />
         </p>
    </div>

    <div id="pageContents" >

    </div>
</form>

我正在使用这个Jquery代码来运行我的程序

$(document).ready(function() {

    $('#query').keypress(function(e) {
        if (e.keyCode == '13') {
            alert( 'enter key is pressed ');
            $('#startSearch').click();
        }
    });

    $('#startSearch').click(function() {
        query = $('#query').val();
        model = $('input:radio[name="model"]:checked').val();
        if(model=='combined'){
            $('#pageContents').load('combinedsearch.jsp?q='+encodeURIComponent(query)+'&m='+model);
        } else {
            $('#pageContents').load('search.jsp?q='+encodeURIComponent(query)+'&m='+model);
        }

    });
});

问题是:当有人按下开始搜索按钮时,$('#startSearch').click(function()效果很好。但$('#query').keypress(function(e))捕获事件并处理我的代码,但从未将结果显示回浏览器。我认为加载功能在$('#query').keypress(function(e))函数内不起作用。任何人都可以指导我

4 个答案:

答案 0 :(得分:1)

当您按 Enter 时,您需要阻止提交表单的默认操作。

$('#query').keypress(function(e) {
    if (e.keyCode == '13') {
        e.preventDefault();
        alert( 'enter key is pressed ');
        $('#startSearch').click();
    }
});

答案 1 :(得分:1)

你做得太多了;)它是一种形式,它的主要事件&#34;是一个submit - 当有人点击&#34;进入&#34;或单击提交按钮。 因此,您的HTML应如下所示:

<form id="myform">
  <input id="query">
  <input type="submit" value="Search Resource" />
</form>

和你的JS:

$(function(){

  // DOM ready

  $('#myform').on('submit', function(e){

    e.preventDefault();

    // Your search code
    // ...

  });

});

答案 2 :(得分:0)

我不会使用按键。使用keydownkeyup

如jquery api中所述:

  

注意:由于按键事件未被任何官员承保   规范,使用它时遇到的实际行为可能   不同浏览器,浏览器版本和平台。

答案 3 :(得分:0)

根据我的提琴,这可以按预期工作:http://jsfiddle.net/65HSm/

HTML:

<div id="pageContents"></div>
<input type="text" id="query">
<input type="button" id="startSearch" value="search">

JS:

$(document).ready(function () {
    $('#query').keypress(function (e) {
        if (e.keyCode == '13') {
            alert('enter key is pressed ');
            $('#startSearch').click();
        }
    });

    $('#startSearch').click(function () {
        query = $('#query').val();
        model = $('input:radio[name="model"]:checked').val();
        if (model == 'combined') {
            console.log('load 1');
            console.log(query);
            $('#pageContents').load('combinedsearch.jsp?q=' + encodeURIComponent(query) + '&m=' + model);
        } else {
            console.log('load 2');
            console.log(query);
            $('#pageContents').load('search.jsp?q=' + encodeURIComponent(query) + '&m=' + model);
        }

    });
});