0

我在包含“动作”按钮的 div 上设置了一个 jQuery BlockUI 调用。Onclick,这个灰色的页面是为了防止双击等。我们引入了一个新选项,它有一个选择框/转到按钮组合。

问题是,选择框更改会导致它进入等待屏幕,然后您才能点击提交按钮。

我如何将 blockui 定位为不触发选择?不幸的是,select name="" 区域是动态的,并且会随着它从 cms 构建而不断变化,所以我不能使用 select[name=] 定位。如有必要,我可以给它上课。“其他”是我目前所拥有的。如果选择单击,我需要构建 if 顶部基本上什么都不做。

$('.actionbuttons').click(function() {
    if($SELECT?)
       alert('select');
    }
else{
       $.blockUI({ message: '<h1>thinking...</h1>' });
    }
}); 

html:

<div class="actionbuttons">
  <input type="submit" name="a" value="Save" onclick="return verify(this.form);">
  <input type="submit" name="b" value="Close" onclick="return verify(this.form);">
  <select name="c" size="1" onchange="changeit();">
      <option selected="selected">Default</option>
      <!-- dont do anything when clicking here -->
  </select>
  <input type="submit" name="d" value="Change C" onclick="return verify(this.form);">
</div>

不,只是为了记录,由于规范,onchange + submit in 1 move 是不可接受的。所以按钮需要在 d 上才能提交 c。请记住,这些名称字母是动态的,并且在每次页面加载时都会发生变化,因此对于定位毫无用处。

4

1 回答 1

0

如果您的意图是仅在单击input元素时触发 BlockUI 覆盖type="submit",您可以简单地在选择器上更具体。

HTML

<div class="actionbuttons">
    <input type="submit" name="a" value="Save" />
    <input type="submit" name="b" value="Close" />
    <select name="c" size="1">
        <option selected="selected">Default</option>
        <option>Other</option>
        <!-- dont do anything when clicking here -->
    </select>
    <input type="submit" name="d" value="Change C" />
</div>

JS

$('.actionbuttons input[type="submit"]').click(function (e) {
    $.blockUI({
        message: '<h1>thinking...</h1>'
    });
    verify( /* Pass in your form */ );
});

$('.actionbuttons select').change(function (e) {
    changeit();
});

这将触发具有该类的容器的子元素(不一定是直接元素)的任何input元素的行为。然后,您不需要在回调函数内部围绕调出覆盖层进行任何逻辑。此外,您还可以选择将呼叫直接移到那里。type="submit"actionbuttonsverify

jsfiddle

于 2013-02-18T20:13:10.447 回答