1

我在页面上有两个单独的表单,它们都有一组复选框。

<body>
   <form name="form1" id="form1" ...>
        <input type="checkbox" name="check1" value="Person"  />
        <input type="checkbox" name="check1" value="Dog"  />
        <input type="checkbox" name="check1" value="Cat"  />
   </form>
    <form name="form2" id="form2" ...>
        <input type="checkbox" name="check1" value="Person"  />
        <input type="checkbox" name="check1" value="Dog"  />
        <input type="checkbox" name="check1" value="Cat"  />
      </form>
  </body>

我需要的是,一旦用户选中/取消选中 form2 中的任何复选框,我想对 form1 中的相应复选框执行相同操作。如果用户在 form2 中选择了“dog”和“cat”,则自动对 form1 进行检查。我已经尝试了几件事,但我无法找到一种基于值字段设置选中属性的方法。

我能做的最好的事情是为所有复选框设置唯一的 ID,并根据 ID 选择/取消选择。但我试图找出是否有更好的选择器方式。

另外,如果有人能建议我更好的方法来做我在这里尝试的事情,我会很高兴。

——我还没试过,但这是我打算做的——

   <form name="form1" id="form1" ...>
        <input type="checkbox" name="check1[]" id="form1_Person" value="Person"  />
        <input type="checkbox" name="check1[]" id="form1_Dog" value="Dog"  />
        <input type="checkbox" name="check1[]" id="form1_Cat" value="Cat"  />
   </form>
    <form name="form2" id="form2" ...>
        <input type="checkbox" name="check1[]" id="form2_Person" value="Person"  />
        <input type="checkbox" name="check1[]" id="form2_Person" value="Dog"  />
        <input type="checkbox" name="check1[]" id="form2_Person" value="Cat"  />
      </form>

单击 form2 复选框后,获取值,然后在 form1 中查找复选框。如果选择了狗,请检查 $('#form1_'[dog]).checked('checked',checked)

4

3 回答 3

1

你可以做

​$('#form1').on('click', 'input:checkbox', function(e) {
    var checked = $(this).is(':checked');
    var val = this.value;
    $('#form2 input:checkbox[value=' + val + ']').prop('checked', checked);
})​​​​​​​​​​​​​​​​​​​​​​​​​​​

在这里摆弄http://jsfiddle.net/gpsax/

于 2012-08-21T20:13:07.130 回答
1

一种方式

$('#form2 input[type="checkbox"]').change(function() {
    var val = $(this).val();
    $('#form1 [value="' + val + '"]').prop('checked', this.checked);
});

两种方式

$('form input[type="checkbox"]').change(function() {
    var $element = $(this);
    var $form = $element.parent('#form1').length ? $('#form2') : $('#form1');
    var val = $element.val();
    $('[value="' + val + '"]', $form).prop('checked', this.checked);
});

演示

于 2012-08-21T20:16:09.947 回答
1

你可以这样做

$('input[type=checkbox]').change(function(){ // <-- bind to all checkboxes
    var $this = $(this);
    var x = $this.index();  // store index
    var $otherForm = $('form').not($this.parent()); // need this to synch other form
    $otherForm.find('input').eq(x).prop('checked',this.checked); // change other forms checkbox accordingly
});​

http://jsfiddle.net/wirey00/ewfrV/

于 2012-08-21T20:17:19.400 回答