0

私は JavaScript が初めてで、他の人のコードからバグを修復しています。私の質問は、フォームのユーザーがテキスト ボックスのエンター キーを押すたびに、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");
     });
     });

     }); 

以下は私が試したコードです。このフォームでは必要ないため、キー入力イベントを無効にしようとしました。javascript プロトタイプ バージョン '1.6.0.2' と jquery バージョン 1.2.6 を使用していますが、以下のコードを入力するとキーダウンが認識されず、 IEで次のエラーを出力します「未定義またはnull参照のプロパティ '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
});

}
4

1 に答える 1

1

これを試して;

 $('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){

/// あなたのコード; }

于 2013-11-01T22:24:23.317 に答える