0

我有一些链接和选择框。我的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中应用了不透明度和“禁用”属性,但它不起作用,任何人都可以告诉我我的错在哪里..

任何人都可以帮助我。提前致谢

4

5 回答 5

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();
});

演示

于 2012-05-09T09:47:37.523 回答
1

您忘记附加我按如下方式执行的字符串,这将解决您的问题

function set_checked(checked,inputFeildName)
{
    $('input[name="'+ inputFeildName+'"]').attr('checked',checked);
}  
于 2012-05-09T09:46:24.927 回答
1

我认为这就是你想要做的......顺便说一句,你拼错field了,所以再次使用变量/属性时要小心。

function set_checked(checked,inputFeildName){
   $('input[name="'+inputFeildName+'"]').attr('checked',checked);
} 
于 2012-05-09T09:47:00.953 回答
1

您的小提琴中有一些错误:

  • 您的函数set_checked在 onLoad-Handler 中声明(如所选),并且仅在本地可用而不在全局范围内可用。通过选择“no wrap (head)”删除包装功能或将您的功能分配给window.set_checked.
  • 请注意,该checked属性仅代表复选框的默认值,要更改您需要使用该checked属性的实际状态(使用 jQuery,您可以使用val())。
  • 如果要更改默认值,则无法通过将属性设置为 (the string) 来实现false。该属性通过其存在表示一个选中的复选框,您需要removeAttribute()用于禁用。defaultChecked将属性与布尔值一起使用会更容易。
  • 最后但并非最不重要的是,所有其他人都检测到了一个明显的错误:要使用变量,您需要使用它而不是将其名称放入字符串中(就像在 PHP 中一样)。

id你也可能对s 比对name属性更满意。我已经用适当的解决方案更新了你的小提琴:http: //jsfiddle.net/vu6fs/7/

在不合适时禁用清除/选择链接:

  • 你不能disable像表单元素一样使用链接(锚点)(请参阅使用 javascript 禁用链接jQuery 禁用链接使用 css 禁用链接)。好的,我们真的不需要禁用它的功能(没有任何变化),所以我猜你只想把它变灰。
    这可以通过 CSS 完成,您需要在用户更改事件和设置上触发更新set_checkedhttp://jsfiddle.net/vu6fs/9/上的示例代码
  • 仅使用一个切换选中状态的链接可能会更容易。它的字母可能会在“清除”和“选择”之间变化,具体取决于当前状态。

我现在编写了一个插件(即一个 jQuery 原型函数)来动态地将这些链接添加到任何复选框元素。这意味着它也可以使用(范围)点击处理程序而不是全局范围污染set_checked函数。

于 2012-05-09T10:31:20.293 回答
0

该函数有一点错误:

function set_checked(checked,inputFeildName){  
     $(**'input[name='+inputFeildName+']'**).attr('checked',checked);
}
于 2012-05-09T09:57:43.753 回答