[英]Hide, show input using toggle jquery boolean
我从下拉列表中获取输入,并且根据用户选择的内容来显示/隐藏不同的输入。 我尝试将boolean与boolean一起使用,但它没有像应该的那样响应。
我希望我发送true进行切换,然后它要么显示输入,要么如果已经显示,则保持这种状态。 如果我发送的是假,它会隐藏,或者如果被隐藏,它将保持这种状态。
如您所见,“父代”和“子代”的第一个值都为true,当我从子代切换为父代(网站加载时,名字是可见的)时,它隐藏了,而我切换到管理员(即使它为假)也是如此。节目。
$(document).ready(function () {
var user = $("[id*=userTypeDD]").val();
$("[id*=userTypeDD]").on("change", function () {
user = $("[id*=userTypeDD]").val();
hideInputFields(user);
});
});
function hideUserInputFields(user) {
if (user == "Child") {
hideInputFields(true, true, false, false, false);
}
if (user == "Parent") {
hideInputFields(true, true, true, true, true);
}
if (user == "Administrator") {
hideInputFields(false, false, false, false, false);
}
}
function hideInputFields(firstNameIsVisible, surnameIsVisible, postcodeIsVisible, telephoneIsVisible, emailIsVisible)
{
$("[id*=firstNameTxt]").closest("tr").toggle(firstNameIsVisible);
}
标记(ASP.NET)
<asp:DropDownList ID="userTypeDD" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem>Child</asp:ListItem>
<asp:ListItem>Parent</asp:ListItem>
<asp:ListItem>Administrator</asp:ListItem>
</asp:DropDownList>
</td>
<td> </td>
</tr>
<tr>
<td class="text-right" style="width: 574px">
<asp:Label ID="firstNameLabel" runat="server" Text="First name: "></asp:Label>
</td>
</tr>
</table>
编辑:在我看来,无论我传递的布尔值是多少,它每次都会简单地切换TR
您在下拉列表的on change事件中调用了错误的函数。 改变这个...
$("[id*=userTypeDD]").on("change", function () {
user = $("[id*=userTypeDD]").val();
hideInputFields(user);
});
至
$("[id*=userTypeDD]").on("change", function () {
user = $("[id*=userTypeDD]").val();
hideUserInputFields(user);
});
这就是为什么最好不要如此类似地命名您的函数。 您的hideUserInputFields
是一个令人误解的名称,因为它不是这样做的函数。 您最好将其称为handleUserSelectionChange
。 那么您可能不会遇到这个错误。 您的其他函数名称很有意义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.