检查复选框后,JQuery keyup始终触发,然后取消选中

时间:2011-10-27 05:01:22

标签: jquery

当用户输入邮政编码并检查useAbove时,邮政编码中会填充邮政编码。如果取消选中useAbove,则清除邮件邮政编码。 现在我收到一个错误,如果用户输入邮政编码,邮件邮政编码就会填充,即使

($("#useAbove").attr("checked") == false

不应该打

$('#txtPostcode').keyup(function (event)

有没有办法可以检查($("#useAbove").attr("checked") = false$('#txtPostcode').keyup(function (event))是否同时被解雇?

由于

$(document).ready(function () {
    $("#useAbove").click(function () {
      //If checkbox checked
      if ($(this).attr("checked") == true) {
         var Postcode = $('#txtPostcode').val();
         var Address = $('#txtAddress').val();

         $('#txtMailingPostcode').val(Postcode);
         $('#txtAddress1').val(Address);

         //Change mailing postcode when text changed
         $('#txtPostcode').keyup(function (event) {
              $('#txtMailingPostcode').val($('#txtPostcode').val());
         });

     } else {
         $("#txtMailingPostcode").val("");
     }
  });
});

HTML     

<table id="Table" border="1">
  <tr>
      <td>txtAddress</td>
      <td>    
          <input id="txtAddress" type="text" />
      </td>
 </tr>
 <tr>
      <td>Postcode</td>
      <td>    
          <input id="txtPostcode" type="text" />
     </td>
 </tr>
 <tr>
     <td><input type="checkbox" name="useAbove" id="useAbove"/></td>
     <td>Use address above</td>
 </tr>
 <tr>
     <td>Address</td>
     <td>
         <input id="txtAddress1" type="text" />
     </td>
 </tr>
 <tr>
     <td>Mailing Postcode</td>
     <td>    
         <input id="txtMailingPostcode" type="text" value="" />
     </td>
   </tr>
 </table>
 </form>

这是我在将其放入主mvc应用程序之前使用的一个小程序。

2 个答案:

答案 0 :(得分:2)

if ($(this).attr("checked") == true) {

我认为问题在于这一行。替换为

if ($(this).attr("checked")) {

在布尔意义上,选择器不等于true,但它返回“truthy”值。

答案 1 :(得分:0)

尝试使用.is(':checked')或将值设置为<input type="checkbox" name="useAbove" id="useAbove"/>并使用$(this).val() == 'YOUVALUEHERE'