如果选中复选框,jquery 将禁用下一个元素

发布于 2024-12-10 13:50:08 字数 1007 浏览 0 评论 0原文

如果选中复选框,如何禁用文本框。 我有几个彼此相邻的文本框和复选框。

HTML:

<form id="form">
<input type="checkbox" name="deposit_checked"> <input type="text" name="deposit_value">
<input type="checkbox" name="booking_checked"> <input type="text" name="booking_value">
<input type="checkbox" name="referral_checked"> <input type="text" name="referral_value">
</form>

我可以使用下面的代码单独完成:

$("input[name=deposit_checked]").change(function(){

if( $("input[name=deposit_checked]").is(":checked") ) {
    $("input[name=deposit_value]").attr("disabled", false);
} else {
    $("input[name=deposit_value]").attr("disabled", true);
}

})

为了节省时间,我尝试使用 .each() 和 .next() 函数,但没有成功:

$("#form input[type=checkbox]").each(function() { 
$(this).change(function(){
   if( $(this).is(":checked") ) {
  $(this).next().attr("disabled", false);
   } else {
  $(this).next().attr("disabled", true);
   }
})
})

How do I disabled textbox if checkbox is checked.
I've got a few textboxes and checkboxes next to each other.

HTML:

<form id="form">
<input type="checkbox" name="deposit_checked"> <input type="text" name="deposit_value">
<input type="checkbox" name="booking_checked"> <input type="text" name="booking_value">
<input type="checkbox" name="referral_checked"> <input type="text" name="referral_value">
</form>

I can do it individually with code below:

$("input[name=deposit_checked]").change(function(){

if( $("input[name=deposit_checked]").is(":checked") ) {
    $("input[name=deposit_value]").attr("disabled", false);
} else {
    $("input[name=deposit_value]").attr("disabled", true);
}

})

to save time, I tried using .each() and .next() function but no luck:

$("#form input[type=checkbox]").each(function() { 
$(this).change(function(){
   if( $(this).is(":checked") ) {
  $(this).next().attr("disabled", false);
   } else {
  $(this).next().attr("disabled", true);
   }
})
})

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

早乙女 2024-12-17 13:50:09

您为 disabled 属性设置了错误的值。这是修复方法:

$("#form input[type=checkbox]").each(function() { 
$(this).change(function(){
   if( $(this).is(":checked") ) {
  $(this).next().removeAttr("disabled");
   } else {
  $(this).next().attr("disabled", "disabled");
   }
})
})

这是 jsfiddle 上的工作示例。请注意,所有 javascript 都应在 $(window).load() 处理程序中声明。

You were setting wrong value for the disabled attribute. Here is the fix:

$("#form input[type=checkbox]").each(function() { 
$(this).change(function(){
   if( $(this).is(":checked") ) {
  $(this).next().removeAttr("disabled");
   } else {
  $(this).next().attr("disabled", "disabled");
   }
})
})

Here is the working example at jsfiddle. Note that the all the javascript should be declared in the $(window).load() handler.

极致的悲 2024-12-17 13:50:09

应该这样做:

$('#form input[type="checkbox"]').change(function() {
   var t = $(this);
    t.next().attr('disabled', ! t.is(':checked'));
});

记住在开始时设置字段和复选框的状态。例如:全部不勾选并禁用。

+您可能想要更改选择器中的#form 位。

This should do:

$('#form input[type="checkbox"]').change(function() {
   var t = $(this);
    t.next().attr('disabled', ! t.is(':checked'));
});

Remember to set the fields' and checkboxes' state in the beginning. For example: all unchecked and disabled.

+You may want to change the #form bit in the selector.

别闹i 2024-12-17 13:50:09

我猜你想隐藏并显示与其复选框相关的文本框,所以你可以通过附加更改事件来做到这一点,这是如何完成的:
每次更改复选框的值时都会触发 change 事件处理程序

$(document).ready(function() {
   $('.chkboxClass').bind('change', function () {

   if ($(this).is(':checked'))
     $(this).next('.txtboxclass').hide();
   else
     $(this).next('.txtboxclass').show();

  });
});

,其中 .chkboxclass 是所有复选框的类,.txtboxclass 是所有文本框

i guess you want to hide n show the texbox respective to its checkbox, so you can do this by attaching change event, this is how it is done:
change event handler is fired every time the value of the check box is changed

$(document).ready(function() {
   $('.chkboxClass').bind('change', function () {

   if ($(this).is(':checked'))
     $(this).next('.txtboxclass').hide();
   else
     $(this).next('.txtboxclass').show();

  });
});

where .chkboxclass is class for all checkboxes and .txtboxclass is class for all textboxes

去了角落 2024-12-17 13:50:08

为了最大限度地减少 DOM 对象的选择,请使用诸如 span 之类的内容覆盖输入。

您可以在此处查看此示例: http://jsfiddle.net/g4mQR/

<form id="form">
  <span>
    <input type="checkbox" name="deposit_checked"> 
    <input type="text" name="deposit_value">
  </span>
  <span>
    <input type="checkbox" name="booking_checked"> 
    <input type="text" name="booking_value">
  </span>
  <span>
    <input type="checkbox" name="referral_checked"> 
    <input type="text" name="referral_value">
  </span>
</form>

JS 代码

$('#form input[type=checkbox]').click(function(){
  var obj = $(this).siblings('input[type=text]');
  obj.attr('disabled', !obj.attr('disabled'));
})

To minimize DOM objects selection, cover inputs in somethings like span.

You can see this example here: http://jsfiddle.net/g4mQR/

<form id="form">
  <span>
    <input type="checkbox" name="deposit_checked"> 
    <input type="text" name="deposit_value">
  </span>
  <span>
    <input type="checkbox" name="booking_checked"> 
    <input type="text" name="booking_value">
  </span>
  <span>
    <input type="checkbox" name="referral_checked"> 
    <input type="text" name="referral_value">
  </span>
</form>

JS code

$('#form input[type=checkbox]').click(function(){
  var obj = $(this).siblings('input[type=text]');
  obj.attr('disabled', !obj.attr('disabled'));
})
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文