2013-11-01 9 views
0

我是JavaScript新手,我从别人的代码修复了一个错误。我的问题是每当窗体上的用户按下文本框上的回车键时,它就会触发一个windows.confirm“messagevar confirm = window.confirm('删除设计检查日期?')”;我相信发生的是当窗体加载触发日历时会捕获事件处理程序。我如何禁用,然后输入即使在IE浏览器中使用jquery版本1.2.6

这里是原代码:

$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"); 
    }); 
    }); 

    }); 

下面是我试过的代码。我试图禁用输入键事件,因为它不需要在这种形式,我使用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 
}); 

} 
+0

'$'在你的环境中不是jquery。 –

回答

1

试试这个代码;

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

把你输入的CSS类 'JQCancelSubmit' 你whant取消提交

编辑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 

function removeDesignCheckDate(id){

///您的代码; }

+0

它不能识别绑定事件处理程序,得到一个错误消息“无法获取未定义或空引用的属性”绑定“ – user2946461

+0

@ user2946461奇怪,因为绑定存在于1.2.6以前的jq版本中。请参阅我的编辑请求 – Sandcar

+0

即使修改后的代码仍然出现错误消息“无法获取属性'绑定'未定义或空引用” – user2946461

相关问题