2014-10-11 4 views
0

Enter 키의 조건을 확인하려고합니다. 그 목적을 위해 일부 코드를 작성했지만 해당 코드는 다른 코드도 실행합니다. 시도했지만 문제가 발생한 이유를 찾지 못했습니다. 마찬가지로 나는 텍스트 필드와 나는 그 아약스 문자 검색을 사용하여 데이터를로드하고 지금은 새로운 조건을 추가하려고하면 키를 누르면 필드를 확인하고 몇 가지 일을하려고 노력하고 있어요. 그러나 제출 단추를 클릭하지 않고 양식을 확인하고 보냅니다. 나는 왜 이런 일이 일어나고 있는지 혼란 스럽다.Js가 키 이벤트 입력시 문제 발생

jQuery(function(){ 
    jQuery("#name").keyup(function(event) 
    { 
     // this is code to check whether enter key is pressed or not 
     if(event.keyCode == 13){ 
      if(jQuery('#name').val()==''){ 
       alert("Please select Product name First.") 
       jQuery('#name').focus(); 
       jQuery('#name').css('border','1px solid red'); 
      }else{ 
       // jQuery('#checkpname').click(); 
       changetab('step2'); // I want to stop code after this 
      } 
     // this is code to check whether enter key is pressed or not 
     }else{ 
      var searchid = jQuery(this).val(); 
      var dataString = 'search='+ searchid; 
      if(searchid!='') 
      { 
       jQuery.ajax({ 
        type: "POST", 
        url: '<?php echo Mage::helper('core/url')->getHomeUrl();?>pmembers/packages/searchproducts/key/e0603b30a8d5802f6df3jhyd87f31ddb/', 
        data: dataString, 
        cache: false, 
        success: function(html) { 
         jQuery("#result").html(html).show(); 
        } 
       }); 
      } 
     } 
    }); 
    //jQuery('body').on('click', '#result',function(e){ 
    jQuery("#result").live("click",function(e){ 
     var $clicked = jQuery(e.target); 
     // var $name = $clicked.find('.name').html(); 
     //var decoded = jQuery("<div>").html($name).text(); 
     jQuery('#name').val(jQuery(e.target).text()); 
    }); 
    jQuery(document).on("click", function(e) { 
     var $clicked = jQuery(e.target); 
     if (! $clicked.hasClass("search")){ 
      jQuery("#result").fadeOut(); 
     } 
    }); 
    jQuery('#name').click(function(){ 
     jQuery("#result").fadeIn(); 
    }); 
}); 

이것은 changetab 기능은 다음과 같습니다 :

function changetab(hrf){ 
    jQuery('a.btn').each(function() { 
    jQuery(this).click(function() { 
     //var thisid = $('#sell .tab-pane.active').attr('id'); 
     jQuery('.wizard a[data-toggle="tab"]').removeClass('current'); 
     jQuery('.wizard a[href="#'+hrf+'"]').click(); 
    }); 
    }); 
} 

이 기능은 기본적으로 탭을 변경 다음은 내 코드입니다. 빈 텍스트가 아니라면 두 번째 탭을로드하고 텍스트 필드를 확인하고 싶습니다. 탭 기능은 다른 조건에서만 잘 작동하여 문제를 생성합니다. 아무도 내가 말하려고하는 것을 이해하기를 바랍니다. 미리 감사드립니다.

+0

다음에 'else'블록을 따라야합니다. 왜? –

+0

@Javad_Amiry 내 코드가 보이면 entery 키 프레스 이벤트와 빈 텍스트 필드에 대한 두 가지 조건이 있습니다. 모두 – Adda

+0

코드 서식 작업이 필요합니다. –

답변

0

먼저, 키의 이벤트를 처리해야합니다 위해 아래 링크를 확인하십시오. 그러나 당신은 그렇지 않습니다.

if(event.keyCode == 13){ 
    event.preventDefault(); 
    if(jQuery('#name').val()==''){ 
     alert("Please select Product name First.") 
     jQuery('#name').focus(); 
     jQuery('#name').css('border','1px solid red'); 
    }else{ 
     // jQuery('#checkpname').click(); 
     changetab('step2'); // I want to stop code after this 
    } 
    // I always return a false and never trust preventDefault 
    return false; 
// this is code to check whether enter key is pressed or not 
}else{ /* rest of code */ 

과 : : 시도 내가 기억, 당신은 keydown 이벤트,하지 keyup에 키의 이벤트를 처리 할 수 ​​있습니다. 그러니 그걸 시도해보십시오. 그것은 작동해야합니다.

jQuery("#name").keydown(function(event){ /* rest of your code... */ 
0

keycheck 함수에 event.preventDefault()를 추가하여 실제 기능을 방해하고 말하는 것을 수행하십시오.

해보십시오 event.stopPropagation() 대신에 나를

는 당신이 필요로하는 곳 추가

if(event.keyCode == 13){ 
    event.stopPropagation(); 
    if(jQuery('#name').val()==''){ 
    alert("Please select Product name First.") 
    jQuery('#name').focus(); 
    jQuery('#name').css('border','1px solid red'); 

    }else{ 

    // jQuery('#checkpname').click(); 
    changetab('step2'); // I want to stop code after this 
     return false; 
    } 

업데이트 알려 주시기 바랍니다. 적절한 기능 모든

PreventDefault

+0

응답 해 주셔서 감사합니다. 코드가 다른 문제를 생성합니다. 여기에 당신이 언급 한 조건이 없습니다. 나는 입력을하고 텍스트 필드는 비어 있지 않습니다. 당신의 코드를 테스트하고 있습니다. – Adda

+0

Enter 키를 눌러도 페이지가 전송됩니다. Entery 키 상태가 끝나면 실행을 멈추고 싶습니다. – Adda

+0

위의 코드를 지금 확인하고 문제가 지속되면 알려주십시오 ... –