Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在页面加载到禁用复选框(使用jquery)后,如何使javascript文件在mvc中工作?_Javascript_Html_Jquery_Ajax_Backbone.js - Fatal编程技术网

在页面加载到禁用复选框(使用jquery)后,如何使javascript文件在mvc中工作?

在页面加载到禁用复选框(使用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("

我刚开始从事一个新项目,但我对javascript和web编程没有太多经验

网站上有一个带有一些复选框的表单。我的工作是用jquery编写一个javascript文件,如果选中了其他复选框,那么jquery应该禁用一些复选框。复选框的ID、名称和其他信息来自数据库,因此代码中没有直接用于复选框的变量。我使用复选框的ID来检查复选框是否被选中(是否正确?)。我想我已经有了正确的代码,因为它在浏览器的web控制台上工作

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”方法修复了我的问题