2014-10-11 53 views
0

我想检查一些条件输入键。为此,我写了一些代码,但该代码也执行一些其他代码。我试过但没有找到问题发生的原因。就像我有文本字段,我正在使用ajax字符搜索加载数据,现在我试图添加新的条件,如果输入键被按下检查字段,并做一些工作。但它会检查并发送表单,而无需点击我的提交按钮。我很困惑为什么会发生这种情况。下面是我的代码: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'阻止对方。为什么? – 2014-10-11 12:37:36

+0

@Javad_Amiry如果你看到它我的代码有两个条件一个用于entery按键事件和一个用于空textfield.both是不同的 – Adda 2014-10-11 16:02:47

+0

你真的需要处理你的代码格式化;) – 2014-10-11 17:54:56

回答

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 */ 

和:我记得,你可以处理​​事件,不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

感谢您的response.Code创建其他问题条件不在这里你提到。像我按下输入和textfield不empty.However但我测试你的代码。 – Adda 2014-10-11 07:19:33

+0

它仍然提交输入密钥的页面。我想在终止密钥条件后停止执行。希望你明白了我的观点。 – Adda 2014-10-11 07:40:11

+0

现在检查上面的代码,并让我知道如果问题仍然存在... – 2014-10-11 12:34:24