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