Javascript 如何动态检查用户是否从textarea中删除了值
我想在所有文本框都有值且选中radiobutton时启用按钮 只要我不尝试删除一些值,它就可以工作。然后其中一个文本框是空的,但按钮仍然处于启用状态,而我希望它们处于禁用状态。如何改变它Javascript 如何动态检查用户是否从textarea中删除了值,javascript,html,Javascript,Html,我想在所有文本框都有值且选中radiobutton时启用按钮 只要我不尝试删除一些值,它就可以工作。然后其中一个文本框是空的,但按钮仍然处于启用状态,而我希望它们处于禁用状态。如何改变它 <body> <h2>@ViewBag.Title.</h2> <div class="row"> <div class="col-md-8"> <section> @using (H
<body>
<h2>@ViewBag.Title.</h2>
<div class="row">
<div class="col-md-8">
<section>
@using (Html.BeginForm("Add", "Question", new {ReturnUrl = ViewBag.ReturnUrl}, FormMethod.Post, new {@class = "form-horizontal", role = "form"}))
{
@Html.AntiForgeryToken()
<h4>//</h4>
<hr/>
@Html.ValidationSummary(true, "", new {@class = "text-danger"})
@Html.TextAreaFor(m => m.QuestionContent, new {@class = "form-control", @rows = "7", @cols = "50", @id= "a", @type = "textarea" })
@Html.TextAreaFor(m => m.AnswerA, new {@class = "form-control", @rows = "7", @cols = "50", @style = "margin-top: 15px", @id = "a", @type = "input" })
@Html.TextAreaFor(m => m.AnswerC, new {@class = "form-control", @rows = "7", @cols = "50", @style = "margin-top: 15px",@id = "a", @type = "input" })
@Html.TextAreaFor(m => m.AnswerD, new {@class = "form-control", @rows = "7", @cols = "50", @style = "margin-top: 15px; margin-bottom: 30px", @id = "a", @type = "input" })
@Html.RadioButtonFor(m => m.CorrectAnswer, "a", new {@type="radio"})
@Html.RadioButtonFor(m => m.CorrectAnswer, "b", new { @type = "radio" })
@Html.RadioButtonFor(m => m.CorrectAnswer, "c", new { @type = "radio" })
@Html.RadioButtonFor(m => m.CorrectAnswer, "d", new { @type = "radio" })
<input id="addNewQuestion" type="submit" value="Dodaj nowe pytanie" class="btn btn-default" style="margin-top: 30px; margin-left: -80px !important"/>
<input id="finish" type="submit" name="AddAndFinish" value="Zakończ dodawanie testu" formaction="AddAndFinish" class="btn btn-default" style="margin-top: 30px; margin-left: 10px !important"/>
</div>
</div>
</div>
}
</section>
</div>
</div>
<script type="text/javascript">
$(document).ready(function () {
$('input[type="submit"]').attr('disabled', true);
$('input[type="text"],textarea').on('keyup', function () {
var questionContentValue = $("#questionContentArea").val();
var answerAValue = $('input[name="ans_a"]').val();
var answerBValue = $('input[name="ans_b"]').val();
var answerCValue = $('input[name="ans_c"]').val();
var answerDValue = $('input[name="ans_d"]').val();
var clicked = false;
$('[type="radio"]').change(function() {
clicked = true;
if ((questionContentValue != '') && (answerAValue != '') && (answerBValue != '') && (answerCValue != '') && (answerDValue != '')&& clicked == true) {
$('input[type="submit"]').attr('disabled', false);
} else {
$('input[type="submit"]').attr('disabled', true);
}
});
});
});
</script>
</body>
There're also other stufs in code to make my html look good, but they're not important.
我想这对你有用。我已经对它进行了更新,使其包含单选按钮,并更接近于匹配示例的选择器和您正在做的事情。对于您来说,将其合并到文档就绪函数中可能更简单
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Testing</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript">
function disableButtons() {
$("input[type='submit']").attr("disabled", true);
}
function enableButtons() {
$("input[type='submit']").attr("disabled", false);
}
$(document).ready(function() {
//start with buttons disabled.
disableButtons();
var $textInputs = $('input[type="text"],textarea');
//when any inputs/textareas change, re-evaluate all inputs and toggle buttons appropriately
$('input,textarea').on('change', function() {
//filter text inputs to the empty ones and see if there are any
var anyEmpty = $textInputs.filter(function() { return this.value == ""; }).length > 0;
//see if any radio buttons are selected
var anyClicked = $('input[type="radio"]:checked').length > 0;
if (!anyEmpty && anyClicked) {
enableButtons();
} else {
disableButtons();
}
});
});
</script>
</head>
<body>
<div><input type="text" name="input1" value="" class="input"></div>
<div><input type="text" name="input2" value="" class="input"></div>
<div><textarea name="input3" rows="8" cols="80" class="input"></textarea></div>
<div>
<input type="radio" name="radioInput" value="Radio 1">
<input type="radio" name="radioInput" value="Radio 2">
</div>
<div class="buttons">
<input type="submit" name="button1" class="button" value="Submit 1" />
<input type="submit" name="button2" class="button" value="Submit2" />
</div>
</body>
</html>
不要将事件侦听器嵌套在其他事件处理程序中。把它们分开。在您的情况下,每个键控都将创建一个新的更改侦听器,以前的更改侦听器将仍然存在,并且广播中不存在任何事件侦听器,直到键控发生更新我的答案以使其更完整。最初禁用按钮。当输入变为空或全部有值时启用和禁用按钮。我做错了什么,因为现在它根本不起作用。如果你将我的示例保存到html文件,你是说我的示例对你不起作用?或者当你试图将它合并到你的代码中时,它不起作用?您必须更改jquery选择器等以匹配您的内容。如果你在你的帖子中更新了你的代码示例,我可以尝试帮助你发现任何问题。我认为我的最新更新应该与你的示例非常匹配。希望您可以使用我的javascript代替您的javascript,而无需进行太多修改?至少基于我对您呈现的html的理解。