即使在IE中使用jquery 1.2.6版,如何禁用然后输入

即使在IE中使用jquery 1.2.6版,如何禁用然后输入,jquery,keydown,unbind,Jquery,Keydown,Unbind,我是JavaScript新手,我正在修复别人代码中的错误。我的问题是,每次表单上的用户按下文本框上的enter键时,都会触发windows.confirm“messagevar confirm=window.confirm('Remove Design Check Date?')”;,我认为正在发生的是,当表单加载时,会捕获一个事件处理程序,从而触发日历 以下是原始代码: $jQuery(document).ready(function(){ $('printableDesignLog').h

我是JavaScript新手,我正在修复别人代码中的错误。我的问题是,每次表单上的用户按下文本框上的enter键时,都会触发windows.confirm“messagevar confirm=window.confirm('Remove Design Check Date?')”;,我认为正在发生的是,当表单加载时,会捕获一个事件处理程序,从而触发日历

以下是原始代码:

$jQuery(document).ready(function(){ 
$('printableDesignLog').hide();
$('add').hide();
$('orders_Input').hide();
$('newOrder_div').hide();
$('designLog_Details').hide();
$('jobNumber').focus();

getDesigners();
new Ajax.Autocompleter("jobNumber","jobNumbers", 
baseURL + "search.php?task=getJobNumbers_WithSeparator",{
     minChars: 2,
     frequency: 0.1,
indicator: 'indicator',
afterUpdateElement : setJobNumber});

Date.format = 'mmm dd, yyyy';
$j(function(){
$j('#Design_Date')
   .datePicker({createButton:true, startDate:'Jan 01, 2006',        
    endDate:'Dec 31, 2015'})
   .bind('click', function(){               
$j(this).dpDisplay();
    this.blur();
    return false;
    })
    .dpSetOffset(-50, 20) // Move calender just above/right
    .bind('dateSelected', function(e, selectedDate, $td){
 $('DesignDate').value = selectedDate.format("yyyy-mm-dd");
    });

    });
 $j(function(){
 $j('#FollowUp_Dt')
    .datePicker({createButton:true, startDate:'Jan 01, 2010', endDate:'Dec 31, 2015'})
    .bind('click', function(){              
 $j(this).dpDisplay();
     this.blur();
     return false;
     })
    .dpSetOffset(-150, -150) // move calendar above the button to the left
    .bind('dateSelected', function(e, selectedDate, $td){
 $('FollowUpDt').value = selectedDate.format("yyyy-mm-dd");
     });
     });

     }); 
下面是我尝试的代码。我尝试禁用enter key事件,因为它在此表单中不需要,我使用的是javascript原型版本“1.6.0.2”和jquery版本1.2.6,但当我输入以下代码时,它无法识别keydown,并在IE中输出以下错误“无法获取未定义或空引用的属性“keydown”。谢谢你的帮助

function preventDefault() {
   var e = this.originalEvent;

   this.isDefaultPrevented = returnTrue;
   if ( !e ) {
       return;
 }

 [// If preventDefault exists, run it on the original event]
     if ( e.preventDefault ) {
     e.preventDefault();

 [// Support: IE]
 [// Otherwise set the returnValue property of the original event to false]
} else {
      e.returnValue = false;
      }
      }


jQuery(document).ready(function(){ 
    $('input[type=text]').keydown(function(event){
    if (event.which == 13){
        $('input[type=text]').unbind();
        event.preventDefault();
        }
    });
 });
这是不断出现的windows.confirm消息框的代码

function removeDesignCheckDate(id)
{
j( ".JQCancelSubmit" ).keypress(function(event) {
    var code = (event.keyCode ? event.keyCode : event.which);
        if (code == 13) { //Enter
            return false;
        }
});

var confirm = window.confirm('Remove Design Check Date?') ;
//confirm.blur();
if (!confirm) return ;
var jobNumber = $j('#jobNumber').val() ;
var tmp = id.split('-',2);//split to 0:- field name & 1:- DesignOrderID
//$j('#msg').html(tmp[0] + ' | ' + tmp[1] + ' > '+ $j('#'+id).val());
//i.e. tmp[0] is the field name; tmp[1] is the DesignOrderID

//construct data object:
var d = new Object(); 
d[eval('"'+tmp[0]+'"')] = $j('#' + id).val(); 
var data = Object.toJSON(d);

var callback = function(response){
    if (response.error) { // display error
       $(id).focus();
 $j('#msg').html('check your input ...');
 setTimeout("$('msg').innerHTML = ''", 3000);//reset the result after 10sec
 }else {
 $j('#msg').html('Changes Saved ...');
//$j(id).html('') ;
refreshAfterDelete(jobNumber); 
setTimeout("$j('#msg').html('')", 3000);//reset the result after 10sec
(tmp[0]).match('Date') ? updateDaysToDesignCompletion(tmp[1]) : '';
}
};
$j.ajax({
    type: 'post',
    dataType: 'json',
    url: controller, 
    data: 'task=removeDesignCheckDate' + '&DesignOrderID=' + tmp[1] + 
         '&dummy=' + new Date().getTime(),
    success: callback
});

}
试试这个

 $('body').on('keypress', '.JQCancelSubmit', function (event) {
                var code = (event.keyCode ? event.keyCode : event.which);
                if (code == 13) { //Enter
                    return false;
                }
            });
将css类“JQCancelSubmit”放在您的输入上,而不取消提交

编辑1

or for previus versions this may work:

$('.JQCancelSubmit').bind('keypress',function(event){

  var code = (event.keyCode ? event.keyCode : event.which);
                    if (code == 13) { //Enter
                        return false;
                    }
})
编辑2

你可以试试这个

$( ".JQCancelSubmit" ).keypress(function(event) {
       var code = (event.keyCode ? event.keyCode : event.which);
                        if (code == 13) { //Enter
                            return false;
                        }
});

Edit 3
函数removeDesignCheckDate(id){

///你的代码;
}

$
在您的环境中不是jquery。它无法识别绑定事件处理程序,收到错误消息“无法获取未定义或空引用的属性'bind'”@user2946461奇怪,因为bind存在于早于1.2.6的jq版本中。请查看我的编辑,即使修改了代码,仍会显示错误消息“无法获取未定义或空引用的属性“bind”解决了该错误,但现在当用户在文本框上按enter键时仍显示windows.confirm消息对此表示抱歉,但我的意思是当有人在文本框上按enter键时显示windows.confirm消息“messagevar confirm=window.confirm('Remove Design Check Date?')”。