mvc 4 jquery功能与dropdownlist和window.onload问题有关
mvc 4 jquery functions with dropdownlist and window.onload issues
我在使两组函数正确工作时遇到问题。我有一个change函数,它显示和隐藏了一个按预期工作的div,但在加载页面时无法使window.onload函数正常工作,并且不影响.change函数的工作方式。
函数脚本:
<script src="~/Scripts/jquery-2.0.3.js"></script>
<script>
$(function () {
window.onload = function () {
if ($("#SelectedGenderId").val() == "3") {
$(".gender-description").show();
} else {
$(".gender-description").hide();
}
if ($("#SelectedSettingId").val() == "1") {
$(".setting-description").show();
} else {
$(".setting-description").hide();
}
}
$("#GenderId").change(function () {
if ($("#GenderId").val() == 3) {
$(".gender-description").show();
} else {
$(".gender-description").hide();
}
});
$("#SettingId").change(function () {
if ($("#SettingId").val() == 1) {
$(".setting-description").show();
} else {
$(".setting-description").hide();
}
});
});
</script>
change函数按预期工作,但.onload不工作。我是否正确使用.onload?
我确信问题是由于您的测试(if
语句)在onload()
中与在change()
事件中处理它的方式不同。
在onload()
中,您使用以下测试:
if ($("#SelectedGenderId").val() == "3")
带有字符串文字
但在change()
事件中,您使用的是
if ($("#GenderId").val() == 3)
带有整数文字。
我怀疑,尽管您在每种情况下测试的控件都不同,但您并没有真正打算以两种不同的方式处理这些值。
希望能有所帮助。
感谢David Tansey把我推向了正确的方向。在进一步研究了.onload函数并试图调和SelectedGenderId之间的差异后,我想出了这个解决方案来正确识别函数的状态(使用alert()来查看IF语句何时会触发)。
<script>
$(function () {
window.onload = function () {
if (('@Model.Client.GenderId') == 3) {
$(".gender-description").show();
} else {
$(".gender-description").hide();
}
if (('@Model.Client.SettingId') == 1) {
$(".setting-description").show();
} else {
$(".setting-description").hide();
}
}
$("#GenderId").change(function () {
if ($("#GenderId").val() == 3) {
$(".gender-description").show();
} else {
$(".gender-description").hide();
}
});
$("#SettingId").change(function () {
if ($("#SettingId").val() == 1) {
$(".setting-description").show();
} else {
$(".setting-description").hide();
}
});
});
</script>
对于任何试图实现类似功能的人来说,这里有信息:
<div class="editor-label">
@Html.LabelFor(model => model.Client.GenderId, "Gender")
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.SelectedGenderId, Model.Genders, new { id = "GenderId" })
@Html.ValidationMessageFor(model => model.Client.GenderId)
</div>
<div class="gender-description">
<div class="editor-label">
@Html.LabelFor(model => model.Client.GenderDescription)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Client.GenderDescription)
@Html.ValidationMessageFor(model => model.Client.GenderDescription)
</div>
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Client.SettingId, "Settings")
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.SelectedSettingId, Model.Settings, new { id = "SettingId" })
@Html.ValidationMessageFor(model => model.Client.SettingId)
</div>
<div class="setting-description">
<div class="editor-label">
@Html.LabelFor(model => model.Client.SettingDescription)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Client.SettingDescription)
@Html.ValidationMessageFor(model => model.Client.SettingDescription)
</div>
</div>
相关文章:
- window.onload没有'无法在Android WebView中工作
- 你能停止window.onload函数吗
- window.onload适用于aspx页面,但不适用于普通html
- 使用window.onload超过1次
- 关于javascript中的window.onload
- 未捕获的类型错误:无法设置属性'onclick'为null.已尝试window.onload
- 如何只使用一次window.onload函数
- window.onload 不适用于计数器页面
- Window.onload 未被调用 [Ruby on Rails] [Vanilla Javascript]
- window.onload和.click()在ie9中不起作用
- JavaScript window.onload versus body.onload
- 将Window Onload函数转换为非阻塞
- 为什么window.onload函数未定义
- 在window.onload之前/之后创建对象之间的区别
- JavaScript window.onload
- 为什么getElementsByClassName可以在没有“;window.onload”;
- window.onload在窗口已打开时未启动
- window.onload未在IE中启动
- “;预加载“;<音频>影响window.onload事件时间
- 何时使用“;window.onload”;