任何人都可以帮助我如何删除按钮禁用属性,如果带有类(number
)的文本框内有值,如果文本框为空则再次禁用。
当前代码:
<input type="text" name="name" class="number" value="hello" readonly />
<input type="submit" name="send" id="send" disabled />
脚本代码:
<script type="text/javascript">
$('.number').on('input', function () {
$('#send').prop("disabled", !$.trim(this.value));
});
</script>
答案 0 :(得分:2)
使用:
$('.number').keyup(function() {
if($(this).val() != '') {
$('#send').removeAttr('disabled');
}else{
$('#send').attr('disabled',true);
}});
答案 1 :(得分:1)
您当前的代码工作正常:JSFiddle demo。
问题是您的.number
元素设置为readonly
,这意味着它不接受任何input
(这是您正在处理的事件)。
如果您在服务器端设置readonly
属性,我想您也可以在服务器端设置disabled
属性。
答案 2 :(得分:0)
您可以收听keydown
个事件,每按一次键,您都会检查该元素的值:
$( ".number" ).on( "keydown", function ( e ) {
var current_value = $( this ).val();
// The keypress event actually happens before the character is inserted.
var value = $.trim( current_value + e.which );
if ( value.length > 0 ){
$( "#send" ).attr( "disabled", false );
}
});
这种方法的唯一问题是,如果用户将值复制粘贴到文本框中,它将无法工作。另一种方法是使用setInterval
每隔X秒检查一次输入。
答案 3 :(得分:0)
试试这样:
/* The keyup event fires right after the user releases a key */
$(".search-bar").on("keyup", function() {
var state = this.value === "";
$("#send").attr("disabled", state);
})
答案 4 :(得分:0)
尝试这样的事情
$('.number').on('change', function () {
if ($(this.val() == '') {
$('#send').removeAttr('disabled');
} else {
$('#send').attr('disabled', '');
}
});