我有一些链接和选择框。我的html代码在
下面<div>
<div>
<a href='#' onclick='set_checked(false,"checkbox1")'>clear</a>
<a href='#' onclick='set_checked(true,"checkbox1")'>select</a>
</div>
<div>
<input type='checkbox' name='checkbox1'/>
</div>
</div>
<div>
<div>
<a href='#' onclick='set_checked(false,"checkbox2")'>clear</a>
<a href='#' onclick='set_checked(true,"checkbox2")'>select</a>
</div>
<div>
<input type='checkbox' name='checkbox2'/>
</div>
</div>
现在我的要求是当我点击select
链接时,我必须根据它的参数检查复选框。并且反转清除。这里我传递了2个参数。一种是传递布尔值(即如果是真的,则检查否则取消选中),另一种是传递复选框字段的名称参数。
我正在使用以下功能来检查或取消选中复选框
function set_checked(checked,inputFeildName){
$('input[name=inputFeildName]').attr('checked',checked);
}
但上面的代码不起作用。这是我的小提琴http://jsfiddle.net/vu6fs/5/。
我还有一个要求,在选择任何复选框之前,必须禁用所有清除链接,选中复选框后必须启用相应的清除链接。我在javascript中应用了不透明度和“禁用”属性,但它不起作用,有人可以告诉我我的错在哪里。
任何人都可以帮助我。提前谢谢
答案 0 :(得分:2)
jQuery 1.6 +
function set_checked(checked,inputFeildName){
$('input[name="'+ inputFeildName +'"]').prop('checked',true);
}
jQuery 1.5及以下
function set_checked(checked,inputFeildName){
$('input[name="'+ inputFeildName +'"]').attr('checked','checked');
}
以下是您的问题扩展示例(您想要的更多内容,关于在复选框更改时禁用/启用a
标记)
<强> CSS 强>
.disButton {
background: transparent;
border: none;
}
.disButton a {
text-decoration: none;
color: #ddd;
}
<强>的jQuery 强>
$('input:checkbox').on('change', function() {
enable_clear(this, this.checked);
}).change();
function enable_clear(el, checked) {
var target = $(el).parent('div').prev('div').find('a:contains(clear)');
if (checked) {
target.unwrap();
} else {
target.wrap($('<button/>', {
disabled: true,
'class': 'disButton',
width: target.width() + 'px'
}));
}
}
$('a').on('click', function(e) {
e.preventDefault();
var target = $(this).parent().next('div').find('input:checkbox');
if (!target.is(':checked') && $(this).text() == 'select') target.click();
if ($(this).text() == 'clear') target.click();
});
<强> DEMO 强>
答案 1 :(得分:1)
你忘记追加我所做的字符串,这将解决你的问题
function set_checked(checked,inputFeildName)
{
$('input[name="'+ inputFeildName+'"]').attr('checked',checked);
}
答案 2 :(得分:1)
我认为这就是你要做的事情......顺便说一句,你有拼错field
所以在再次使用变量/ attr时要小心。
function set_checked(checked,inputFeildName){
$('input[name="'+inputFeildName+'"]').attr('checked',checked);
}
答案 3 :(得分:1)
你的小提琴中有一些错误:
set_checked
在onLoad-Handler(已选中)中声明,并且仅在本地而非全局范围内可用。选择“no wrap(head)”删除包装功能,或将功能分配给window.set_checked
。checked
属性仅代表复选框的默认值,以更改您需要使用checked
property的实际状态(使用jQuery,您可以使用val())。false
来实现。该属性表示检查的checbox存在,您需要使用removeAttribute()
进行禁用。使用布尔值defaultChecked
属性更容易。您可能对id
s比name
属性更满意。我用适当的解决方案更新了你的小提琴:http://jsfiddle.net/vu6fs/7/
要在不合适时禁用清除/选择链接:
disable
链接(锚点),因为您可以使用表单元素(请参阅Disable link using javascript,jQuery disable a link,Disable link using css)。好吧,我们真的不需要禁用它的功能(没有任何变化),所以我猜你只想把它变灰了。set_checked
的设置。 http://jsfiddle.net/vu6fs/9/ 我现在have written a plugin(即jQuery原型函数)将这些链接动态添加到任何复选框元素。这意味着它也可以使用(范围)点击处理程序而不是全局范围污染set_checked
函数。
答案 4 :(得分:0)
该函数有一点错误:
function set_checked(checked,inputFeildName){
$(**'input[name='+inputFeildName+']'**).attr('checked',checked);
}