坚持使用JQuery有条件地启用或禁用输入
我试图根据变量的值有条件地启用或禁用HTML输入。“禁用”部分工作正常,但“启用”部分工作不正常,我不知道为什么 守则:坚持使用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',
<--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>