如何以大格式禁用特定表单元素

时间:2015-05-12 00:12:06

标签: javascript jquery html forms

我必须真诚地感谢Darren Davies对我编写测试html文件的以下代码的帮助。

<html>
<head>
<title>field_enable</title>
<script type="text/javascript" src="script/jquery.js"></script>
<script>
$().ready(function() {

$('#clicker').click(function() {
$('input').each(function() {
    if ($(this).attr('disabled')) {
        $(this).removeAttr('disabled');
    }
    else {
        $(this).attr({
            'disabled': 'disabled'
          });
      }
    });
 });
});
</script>
</head>
<body>
<div id='clicker' style='background-color:#FF0000; height:20px;     width:50px;'></div>
<br>
<input type='text' disabled></input>
<input type='text' disabled></input>
<input type='text' disabled></input>
</body>
</html> 

这很好用,但是如果我需要为各种客户端禁用某个字段的字段,我的表单有很多。当我应用代码时,它肯定会激活我已禁用的字段,但它也会禁用表单中的其余字段,即使它们没有设置属性。我现在的问题是弄清楚如何仅激活我已禁用的字段并启用其余字段。

2 个答案:

答案 0 :(得分:1)

如果您只想影响某些字段,可以将这些字段分配给特定的类(在此示例中可更改)

<input type='text' disabled class="changeable" />

并更改此行

$('input').each(function() {

$('input.changeable').each(function() {

因此它仅适用于具有给定类

的输入

答案 1 :(得分:1)

它会禁用其他字段,因为您的&#34; if&#34;告诉它这样做。当你使用:

if ($(this).attr('disabled'))

当输入没有此attr时,它会使条件失败,因此它将禁用输入! :)

您可以检查的是:

if ($(this).is("[disabled]") && $(this).attr('disabled')){
  // do your stuff here
}

所以使用elem.is(&#34; attr-name&#34;)你可以知道它是否有你的attr。

Ivan指出了另一种解决方案,你可以使用类来区分你的输入。

干杯