javascript没有';t在foreach MVC的所有元素中工作

javascript没有';t在foreach MVC的所有元素中工作,javascript,asp.net-mvc,foreach,Javascript,Asp.net Mvc,Foreach,我为他们的评论和回复建立了一个代码。。我使用@foreach来显示ViewBag中包含注释列表的所有元素。。 在post和get中,一切都很好。。 但我的问题是,我试图禁用回复的“提交”按钮,以防止任何人在未键入的情况下按下它。。 所以我使用了javascript,但是代码没有很好地工作。。 首先,它仅适用于@foreach的最后一个元素。。在我将名称用作“class”而不是“id”之后,它适用于所有元素 但问题是。。例如,如果我键入第一个回复输入文本。。按钮未启用。。但是如果我在最后一次回复时

我为他们的评论和回复建立了一个代码。。我使用
@foreach
来显示
ViewBag
中包含注释列表的所有元素。。 在post和get中,一切都很好。。 但我的问题是,我试图禁用回复的“提交”按钮,以防止任何人在未键入的情况下按下它。。 所以我使用了
javascript
,但是代码没有很好地工作。。 首先,它仅适用于
@foreach
的最后一个元素。。在我将名称用作“class”而不是“id”之后,它适用于所有元素 但问题是。。例如,如果我键入第一个回复输入文本。。按钮未启用。。但是如果我在最后一次回复时输入文本。。所有按钮均启用。。 我希望每个回复的代码都有效。。仅当有人输入该输入文本时

JavaScript


var$inputreply=$('.repress');
var$buttonreply=$('.replysubmit');
setInterval(函数(){
如果($inputreply.val().length>0){
$buttonreply.prop('disabled',false);
} 
否则{
$buttonreply.prop('disabled',true);
}
}, 100);                      
选择器
$('.replysubmit')
返回该css类的所有项,因此更新所有这些元素的禁用属性,而不仅仅是最接近输入元素的元素

您应该使用一个相对选择器来获取表单中reply输入元素所在的submit按钮

jQuery
closest()
find()
方法将非常方便

这应该行得通

$(function () {

    $('.replysubmit').prop('disabled', true); // Disable all buttons when page loads

    // On the keyup event, disable or enable the buttons based on input 
    $(".replies").keyup(function() {

        if ($(this).val().length > 0) {
            $(this).closest("form").find(".replysubmit").prop('disabled', false);
        } else {
            $(this).closest("form").find(".replysubmit").prop('disabled', true);
        }
    });
});

工作效率很高。。非常感谢:)