jQuery-如何在加载后监听ID更改的按钮并重置其属性

Meilan

我在模态中有一个用于文本区域的提交按钮,如果文本区域为空,则此按钮设置为禁用。代码是:

function textAreaListener() {
  if (!($(#text-area).val().trim())) {
    $('#submit-button').prop({ disabled: true });
  } else {
    $('#submit-button').prop({ disabled: false });
  }
}

它运作良好。

之后,我编写了另一种方法来调用模式,并且我需要更改按钮的ID,以便不会发生原始的点击事件,我曾经$('#submit-button').attr('id','batch-submit-button');更改过按钮的ID,并将上面的函数更改为:

function textAreaListener() {
  if (!($(#text-area).val().trim())) {
    $('#submit-button').prop({ disabled: true });
    $('#batch-submit-button').prop({ disabled: true });
  } else {
    $('#submit-button').prop({ disabled: false });
    $('#batch-submit-button').prop({ disabled: false });
  }
}

然后prop({ disabled: false })不适用于具有新ID(#batch-submit-button)的按钮,但是具有旧ID的较旧按钮效果很好。我在StackOverflow中看了几个问题,我认为原因是JQuery在加载后无法捕获新ID。有什么办法解决吗?谢谢!

------------------这是我的haml文件-------------- -

#state-modal.modal
  .modal-dialog
    .modal-content
      .modal-header
        %h5#state-modal-title.modal-title
      .modal-body
        = form_for :proposal, url: '#', html: {id: 'state-modal-form'} do |form|
          = form.text_area :comment, id: 'text-area', |
          placeholder: t('.comment'), class: 'form-control', rows: 5
      .modal-footer
        %button.btn.btn-default{id: 'cancel-button', data: {dismiss: 'modal'}}= t('.cancel')
        %button.btn.btn-primary{id: 'submit-button'}= t('.done')

确切的情况是:

$(function () {
  function initState() {
    $('#state-modal-form').attr('action', '#');
    $('#state-modal-form textarea').val('').hide();
    $('#submit-button').prop({ disabled: true });
  }

  function assignHandlersToElements() {
    $(document).on('click', '.commentable-element', App.books.bookCommentableElementHandler);
    $(document).on('keyup', '#state-modal-form textarea', App.books.textAreaListener);
    $(document).on('click', '#cancel-button', App.books.initState);
    $(document).on('click', '#submit-button', App.books.submitHandler);
  }

  function bookCommentableElementHandler(event) {
    event.preventDefault();
    if(event.target.id == 'selected-button'){
      $('#submit-button').attr('id','batch-submit-button');
      $('#text-area').show();
      $('#batch-submit-button').prop({ disabled: true });
    }else{
      $('#state-modal-form').attr('action', $(this).data('url'));

      $('#text-area').attr('placeholder', 'Comment').show();
      $('#text-area').show()
    }
    $('#state-modal').modal({ backdrop: 'static', keyboard: false }, 'show');
  }

  function textAreaListener() {
    if (!($(this).val().trim())) {
      $('#submit-button').prop({ disabled: true });
      $('#batch-submit-button').prop({ disabled: true });
    } else {
      $('#submit-button').prop({ disabled: false });
      $('#batch-submit-button').prop({ disabled: false });
    }
  }

  function submitHandler() {
    $('#state-modal-form').submit();
  }

  App.books.initState = initState;
  App.books.assignHandlersToElements = assignHandlersToElements;
  App.books.bookCommentableElementHandler = bookCommentableElementHandler;
  App.books.textAreaListener = textAreaListener;
  App.books.submitHandler = submitHandler;
  App.books.assignHandlersToElements();
  App.books.initState();
});
用户13046635

我已经模拟了您的代码。和prop({disabled:false}); 正在为ID更改按钮工作。这是我的代码。

HTML:

<button id="submit-button">Submit</button>
<button id="disable_btn">Disable</button>
<button id="enable_btn">Enable</button>
<button id="change_id">Change ID</button>

jQuery的:

$(document).ready(function(){
    $("#disable_btn").click(function(){
        $('#submit-button').prop({ disabled: true });
        $('#batch-submit-button').prop({ disabled: true });
    });

    $("#enable_btn").click(function(){
        $('#submit-button').prop({ disabled: false });
        $('#batch-submit-button').prop({ disabled: false });
    });

    $("#change_id").click(function(){
        $('#submit-button').attr('id', 'batch-submit-button');
    });
});

请提供您的确切情况。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

声音加载后,JQUERY更改属性

来自分类Dev

表单加载后如何重置jquery等待游标?

来自分类Dev

jQuery-更改CSS属性并重复

来自分类Dev

jQuery单击后更改输入按钮值属性文本

来自分类Dev

如何使用jQuery监听特定的按钮

来自分类Dev

jQuery加载后找到ID

来自分类Dev

如何使用 jQuery 更改 Bootstrap 按钮的属性和属性

来自分类Dev

页面中的data-id更改后,如何在jQuery中选择data-id?

来自分类Dev

如何在JQuery中基于按钮ID更改对话框标题

来自分类Dev

jQuery的元素更改ID属性

来自分类Dev

用jQuery调用asp方法后如何更改按钮类?

来自分类Dev

jQuery函数后重置

来自分类Dev

jQuery-如何重置此按钮的html()?

来自分类Dev

如何在动态加载的按钮上调用 jquery off 方法

来自分类Dev

如何在JQuery中创建动画后调用重新加载

来自分类Dev

jQuery-如何在单击按钮后访问此元素

来自分类Dev

如何在Javascript / jQuery中重置超时?

来自分类Dev

如何在Javascript / jQuery中重置超时?

来自分类Dev

jQuery加载HTML后获取ID

来自分类Dev

如何在jquery中将变量附加到单选按钮的id

来自分类Dev

使用jQuery在不知道其完整ID的情况下更改给定元素的属性

来自分类Dev

如何在CSS属性更改jQuery中使用fadeIn

来自分类Dev

如何在jQuery中更改视频src属性值?

来自分类Dev

如何在jQuery中更改content:url的css属性?

来自分类Dev

使用JQuery按钮更改URL #ID

来自分类Dev

使用Jquery更改检查单选按钮ID

来自分类Dev

如何在不重新加载页面的情况下重置Rhinoslider Jquery插件?

来自分类Dev

jQuery加载滚动后

来自分类Dev

jQuery加载滚动后