首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQuery -如何监听ID更改按钮并在加载后重置其属性

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

Stack Overflow用户
提问于 2020-04-13 21:50:22
回答 1查看 74关注 0票数 1

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

代码语言:javascript
复制
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,并将上面的函数更改为:

代码语言:javascript
复制
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 });
  }
}

然后,对于具有新id (#batch-submit-button)的按钮,prop({ disabled: false })不起作用,但是具有旧id的较旧按钮工作得很好。我在StackOverflow中看了几个问题,我认为原因是JQuery在加载后无法捕获新的id。有没有办法解决这个问题?谢谢!

-这是我的haml文件

代码语言:javascript
复制
#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')

确切的情况是:

代码语言:javascript
复制
$(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();
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-13 23:09:28

我已经在我这边模拟了你的代码。和prop({disabled: false });正在使用id已更改的按钮。这是我的代码。

HTML:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
$(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');
    });
});

请提供您的确切案例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61189348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档