在Jquery中禁用并启用函数

时间:2017-03-27 11:15:31

标签: javascript jquery html

我在html中有一个文本输入,受到来自不同无线电和复选框的.change()事件所引发的功能的影响。我试图这样做,以便如果用户键入输入,当上述无线电和复选框中发生.change()事件时,此功能将不再运行(用户仍必须能够使用这些无线电和复选框)。但是,如果用户将输入留空并单击,则脚本将再次运行。我希望是可能的。 到目前为止,我对此采取了以下措施: 使用.prop('diabled'是不可行的,因为它完全禁用输入,使用户无法输入,所以我需要另一种解决方案。

$(function() {
  $('#burger-navn').on('input', function() {
    $("#burger-navn").prop('disabled', true);
  });
//When the input (#burger-navn) is typed into it should be "disabled"
  $('#burger-navn').focusout(function() {
    if ($(this).val().length == 0) {
      $("#burger-navn").prop('disabled', false);
    }
  });
//But if its clicked out of while its blank, it should be able to run again.
  $("#okseinput, #laksinput, #kyllinginput, #vegetarinput").change(function() {
    if (!$("#burger-navn").not(':disabled')) { //condition that tests
      navngenerator();
    }
  });
});

2 个答案:

答案 0 :(得分:0)

要解决此问题,我只需创建一个单独的输入标记,我可以添加和删除已禁用的属性,并检查它是否具有该属性。 所以在html:

    <input id="burger-navn" type="text"/>
  <input id="toggle" disabled="disabled" style="display:none"/>

jQuery的:

    var previousValue = $("#burger-navn").val();
  $("#burger-navn").keyup(function(e) {
      var currentValue = $(this).val();
      if(currentValue != previousValue) {
           previousValue = currentValue;
           $("#toggle").prop('disabled', false);
      }//This function will remove disabled from #toggle, when a user types into #burger-navn
  });
  $('#burger-navn').focusout(function() {
    if ($(this).val().length == 0) {
      $("#toggle").prop('disabled', true);
    }
  });
  if ($("#toggle").is(':disabled')) {
    navngenerator();
  }
  $("#okseinput, #laksinput, #kyllinginput, #vegetarinput").change(function() {
    if ($("#toggle").is(':disabled')) {
      navngenerator();
    }
  });

答案 1 :(得分:-1)

$(selector).on('change', function(event){
  event.preventDefault();
  event.stopPropagation();
  // the selected field no longer does anything on change
});

是你在寻找什么?