防止单个表单项上的全局jQuery事件

时间:2018-08-27 04:09:13

标签: javascript jquery

当我的JS代码加载时,我调用以下代码,这会向所有文本输入添加一个onkeypress事件:

$('#myForm input[type=text]').keypress(function(event) {
  sysOnEnter(event, $('#myForm input[type=text]').attr('id'), modalId);
});

功能sysOnEnter是在用户按下Enter/Return键时单击一个按钮:

function sysOnEnter(event, id, modalId) {

  var key = event.key || event.keyCode;

  if (key == 'Enter' || key == 13) {

    var val = $('#' + id).val();

    setTimeout(function() {
      if ($('#' + id).val() == val)
        document.querySelector('#' + modalId + ' .btn-primary').click();
    },0);

    event.preventDefault();

    return false;
  }
}

不希望发生这种情况的时间是在使用Google的自动建议地址表格时:

<input
  id           = "autocomplete"
  class        = "form-control"
  placeholder  = "Start typing..."
  onFocus      = "initAutocomplete();geolocate();"
  type         = "text"
  >

是否有一种简单的方法可以将这个特定字段从javascript函数中排除?

2 个答案:

答案 0 :(得分:3)

使用选择器:not(#autocomplete)排除ID为autocomplete的元素:

$('#myForm input[type=text]:not(#autocomplete)').keypress(function(event) {
  console.log('firing event');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="myForm">
  <input type="text">
  <input type="text">
  <input type="text" id="autocomplete" placeholder="autocomplete">
  <input type="text">
</form>

答案 1 :(得分:2)

如果您要排除的字段是事先已知的,则可以使用JQuery .not()

<script type="text/javascript" >

    function func(id) {

        HFTargetSign = id;
        alert(HFTargetSign);
    }
</script>