我遇到了按键事件的问题。首先我输入密钥然后它正在工作但是下次输入密钥不起作用。请告诉我我的代码出了什么问题:
html代码:
<div class="findbysku">
<input type="text" class="input-text" name="q" id="finder" title="Model #" onblur="if (this.value == '') { this.value = this.defaultValue;}" onfocus="if (this.value == this.defaultValue) {this.value = '';}" value="Model #" on/>
<button class="button" title="Search" id="finder_find" type="submit">Search</button>
</div>
javascript代码:
type="text/javascript"></script>
<script type="text/javascript" >
$.noConflict();
jQuery(document).ready(function(){
var options, a;
jQuery(function(){
options = { serviceUrl:'<?php echo $url; ?>finder/index/loadproductsbyquery',
onSelect: function(value, data){ open_product(data); },
maxHeight:400,
minChars:3,
width:300,
noCache: false
};
a = jQuery('#finder').autocomplete(options);
});
jQuery('#finder').keypress(function(event) {
if (event.keyCode == 13) {
if (a.data.length > 0 ) {
open_product(a.data[0]);
}
}
});
jQuery('#finder_find').click(function() {
if (a.data.length > 0 ) {
open_product(a.data[0]);
}
});
jQuery('.list-categories select').change(function() {
window.open(jQuery(this).val(),'_self');
});
});
jQuery("#sample-review-click").fancybox({
padding : 0
});
jQuery("#guidelines-click").fancybox({
autoSize : true,
maxWidth : 600,
});
function open_product(data) {
jQuery('.product-container').css('background-color','#FFFFFF');
jQuery.post('<?php echo $url; ?>finder/index/getproductinfo',{ id: data} , function(response) {
var response_array=JSON.parse( response );
var url=response_array.url+"#box-Reviews";
window.location.href = url;
});
}
</script>
答案 0 :(得分:0)
keypress
事件工作正常。可能还有其他一些问题
$.noConflict();
jQuery(document).ready(function(){
jQuery('#finder').on('keypress',function(event) {
alert(event.keyCode)
if (event.keyCode == 13) {
if (a.data.length > 0 ) {
open_product(a.data[0]);
}
}
});
})
注意:来自w3school与按键事件相关的事件顺序:
keydown - The key is on its way down
keypress - The key is pressed down
keyup - The key is released
但是,并未触发所有键的按键事件(例如ALT,CTRL,SHIFT,ESC)。使用keydown()方法也可以检查这些键。