Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.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有条件地启用或禁用输入_Jquery_Html_Input - Fatal编程技术网

坚持使用JQuery有条件地启用或禁用输入

坚持使用JQuery有条件地启用或禁用输入,jquery,html,input,Jquery,Html,Input,我试图根据变量的值有条件地启用或禁用HTML输入。“禁用”部分工作正常,但“启用”部分工作不正常,我不知道为什么 守则: <--if variable is true...--> <div id="disabledSearch" class="searchBox disabled"> <script type="text/javascript"> $('#disabledSearch :input').attr('disabled',

我试图根据变量的值有条件地启用或禁用HTML输入。“禁用”部分工作正常,但“启用”部分工作不正常,我不知道为什么

守则:

<--if variable is true...-->
<div id="disabledSearch" class="searchBox disabled">
    <script type="text/javascript">
        $('#disabledSearch :input').attr('disabled', true); 
    </script>

<--if variable is false-->
<div id="enabledSearch" class="searchBox">
    <script type="text/javascript">
        //This line isn't working:  
        $('#enabledSearch :input').removeAttr('disabled');
    </script>

$('disabledSearch:input').attr('disabled',true);
//此线路不工作:
$('#enabledSearch:input')。removeAttr('disabled');
代替removeAttr 试一试

注意:这只是一个建议,但您可能应该在$(document).ready()函数中执行此操作。这将清除一些重复的代码


已编辑

看看如何将代码迁移到$(document).ready(function(){});并使用$.toggle()函数根据条件在输入上切换禁用。注意:如果该条件仅在服务器端引用,则可以通过将其放置在隐藏输入中,在客户端公开该标志

就我个人而言,我会这样做,假设你在div下有一个有效的输入

<div id="searchDiv" class="searchBox <%=SearchIsDisabled ? "disabled" : "enabled"%>"> 
    <input name="myinput" value="" type="text" />
</div>

<script type="text/javascript"> 
        $(document).ready(function () {
           $("#searchDiv.disabled input).attr('disabled', true);
           $("#searchDiv.enabled input).attr('disabled', false);
        })
</script> 

$(文档).ready(函数(){
$(“#searchDiv.disabled input).attr('disabled',true);
$(“#searchDiv.enabled input).attr('disabled',false);
})

我在这上面玩了一会儿-看看

input.attr('disabled',true)
input.attr('disabled',false)
成功切换输入

唯一的可能是您没有选择正确的元素,因此代码似乎不起作用。确保选择器选择了正确的节点,或在此处共享更多代码-您可能需要将函数放置在
$(function(){…})
包装器中,以确保它们仅在加载DOM后执行


另外,您是否收到任何与js相关的浏览器错误?

谢谢@pointy-我更改了顺序,现在它可以工作了


编辑:我似乎找不到@pointy给我这个想法的评论。然而,解决方案是,我改变了页面上元素和javascript的顺序。

removeAttr
肯定可以做到这一点,我自己也使用过很多次。另外,您应该使用
attr('disabled','disabled')
来禁用输入元素。感谢您指出这一点!我不同意“disabled”比简单的布尔值更正确。该属性在DOM规范中明确定义为布尔值,并且将其设置为
true
在我所知道的每个浏览器中都有效。我相信这一概念源于需要在XHTML文档中为属性指定一个值,而不是像在HTML中那样简单地为其提供sans值。但是,这与如何从Javascript操作属性无关。那么您要将脚本嵌入到HTML中?很好,但是与脚本相关的
元素在哪里?除非在加载DOM后运行代码,否则将导入订单。我们这里缺少一些重要信息。这看起来像是一条评论。没有答案。请使用评论功能。你在这里问了50多个问题。你应该很清楚这里的情况。(在你的问题中张贴相关代码是另一个例子。)如果你想引用你的解决方案,请具体说明。我没有看到任何地方@Pointy对订单做出评论或回答。因此,这个答案没有帮助。
<div id="searchDiv" class="searchBox <%=SearchIsDisabled ? "disabled" : "enabled"%>"> 
    <input name="myinput" value="" type="text" />
</div>

<script type="text/javascript"> 
        $(document).ready(function () {
           $("#searchDiv.disabled input).attr('disabled', true);
           $("#searchDiv.enabled input).attr('disabled', false);
        })
</script>