0

我有一个这样的按钮:

input type="submit" name="continue" id="continue" value="CONTINUE" class="submitContact" />

然后对于这个按钮,我正在设置一个看起来像这样的 js:

$('#continue').click(function() {
    $('#storePickUp').change(function() { //catch checkbox
        var $check = $(this),
        $div = $check.parent();
    if($check.prop('checked') || $('#shippingZipCode').val().length) 
    {
    $('.checkoutForm').fadeIn(1000);
    }
    else {
document.getElementById(shippingZipCode).style.backgroundColor = '#FFFEAD'; 
    }
  });

});

我尝试做的是检查是否.shippingZipCode填写了文本框或选中了复选框#storePickUp,如果是肯定的,我会显示一个具有类的 div .checkoutForm

但是,我无法让它工作。这个js好看吗?

谢谢!

4

2 回答 2

1

您的点击事件来自输入的submit输入。因此,首先,您必须return false防止它发布和重定向。

其次,您的点击事件只是分配一个更改事件。当所选输入发生更改时,更改事件将发出其分配的回调,这可能不会持续一段时间,肯定比页面发布前的几毫秒短。

您将要检查您的值,然后决定要采取的行动,然后返回 false 以阻止帖子发生。

$('#continue').click(function() {
  var $check = $('#storePickUp');//use reference to check for value immediately
  var $div = $check.parent();
  if($check.prop('checked') || $('#shippingZipCode').val().length) 
  {
   $('.checkoutForm').fadeIn(1000);
  }
  else {
   document.getElementById('shippingZipCode').style.backgroundColor = '#FFFEAD'; 
  }
  return false;//prevent form from posting
});
于 2013-06-06T19:48:31.273 回答
0

不需要复选框的更改功能。只需检查它的状态。

$('#continue').click(function() {
    var $check = $('#storePickUp'),
    $div = $check.parent();

    if($check.prop('checked') || $('#shippingZipCode').val().length) {
        $('.checkoutForm').fadeIn(1000);
    } else {
        document.getElementById('shippingZipCode').style.backgroundColor = '#FFFEAD';
    }
});
于 2013-06-06T19:43:56.433 回答