在页面加载到禁用复选框(使用jquery)后,如何使javascript文件在mvc中工作?
我刚开始从事一个新项目,但我对javascript和web编程没有太多经验 网站上有一个带有一些复选框的表单。我的工作是用jquery编写一个javascript文件,如果选中了其他复选框,那么jquery应该禁用一些复选框。复选框的ID、名称和其他信息来自数据库,因此代码中没有直接用于复选框的变量。我使用复选框的ID来检查复选框是否被选中(是否正确?)。我想我已经有了正确的代码,因为它在浏览器的web控制台上工作在页面加载到禁用复选框(使用jquery)后,如何使javascript文件在mvc中工作?,javascript,html,jquery,ajax,backbone.js,Javascript,Html,Jquery,Ajax,Backbone.js,我刚开始从事一个新项目,但我对javascript和web编程没有太多经验 网站上有一个带有一些复选框的表单。我的工作是用jquery编写一个javascript文件,如果选中了其他复选框,那么jquery应该禁用一些复选框。复选框的ID、名称和其他信息来自数据库,因此代码中没有直接用于复选框的变量。我使用复选框的ID来检查复选框是否被选中(是否正确?)。我想我已经有了正确的代码,因为它在浏览器的web控制台上工作 if ($("#id_865_gen").is("
if ($("#id_865_gen").is(":checked")) {
$("#id_866_gen").prop("disabled", true);
} else {
$("#id_866_gen").prop("disabled", false);
}
我有一个index.html文件,其中包含javascript文件的所有源代码。我创建了一个新的js文件,并将其添加到index.html(在body标记的底部)。我认为到目前为止这是有效的,因为如果我在js文件中发出警报,我会在加载页面之前收到警报。除了JS文件,我还需要考虑什么?当然,我的代码必须实时工作。因此,如果选中一个复选框,则应禁用另一个复选框。如果未选中同一个框,则应再次启用另一个框。我是否必须将代码放入函数中并在HTML文件中启动函数
我不知道还有什么是重要的,但该项目主要是用PHP、jquery、主干(MVC)、模板库手柄构建的,并使用ajax。我以前从未使用过ajax,但我是否必须在代码中包含一些ajax内容才能使其在现场使用
我会非常感谢你的建议或想法
更新:
我找到了解决我问题的办法。我在复选框中添加了onchange属性。每次选中复选框或取消选中复选框时,都会触发我的函数。您应该将代码放入其中
$( document ).ready(function() {
// your code
});
您的代码仅在页面文档对象模型(DOM)就绪时执行
参考资料:当您从另一种语言学习javascript时,有很多东西需要学习。最大的调整之一是管理代码何时执行 一般来说,对于类似的情况,您希望代码运行:
function updateBoxes() {
if ($("#id_865_gen").is(":checked")) {
$("#id_866_gen").prop("disabled", true);
} else {
$("#id_866_gen").prop("disabled", false);
}
}
仅仅把这个函数放在脚本中并不能执行这个函数——您仍然需要让它在正确的时间执行。要使其在页面加载后执行,可能会因应用程序而异。它可以像在脚本标记中添加updateBoxes()
一样简单,但通常需要等待某种呈现。在不了解更多应用程序的情况下,以下是一个很好的猜测:
$(function() {
// this code will execute when jquery thinks your DOM is loaded
updateBoxes(); // do the initial check
$("#id_865_gen").change(updateBoxes); // this will run the check when your input changes value
});
其他问题 如果这不起作用,很可能是因为当代码运行时,复选框还不在DOM中。它们可以通过框架添加。如果它们是通过主干添加的,您可以四处寻找添加html的主干
render
方法。然后需要在渲染后执行updateBoxes
用于查找输入的jquery选择器看起来可能会更改。使用name
属性或class
或其他方式查找输入可能更安全。例如:
$("input[name='blahblah']")
将选择输入
,而不使用任何id。在进行if检查之前使用设置超时(函数)DB中的id
/复选框的数量/顺序是否随时间变化或始终相同?我们的代码可以做出哪些假设?如果不能做出任何假设,我猜信息将被引导到HTML页面本身,或者由Ajax请求检索。我从假设固定id开始,但现在我认为id正在改变。你知道我如何处理Ajax请求吗?也许你只需要这个:。基本上,您可以从PHP
将初始数据写入页面的
标记中,您的jQuery脚本可以选择它,因为它已经说过“在body标记的底部”,所以这不重要……嘿,非常感谢您的回答!这对我理解上下文有很大帮助。我通过在html标记中插入“onchange”方法修复了我的问题