我有一个提交按钮,用于模式中的文本区,如果文本区为空,则此按钮设置为禁用。代码是:
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 });
}
}然后,对于具有新id (#batch-submit-button)的按钮,prop({ disabled: false })不起作用,但是具有旧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();
});发布于 2020-04-13 23:09:28
我已经在我这边模拟了你的代码。和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');
});
});请提供您的确切案例。
https://stackoverflow.com/questions/61189348
复制相似问题