我在模态中有一个用于文本区域的提交按钮,如果文本区域为空,则此按钮设置为禁用。代码是:
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();
});
我已经模拟了您的代码。和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] 删除。
我来说两句