2013-02-18 57 views
0

我有一个jQuery BlockUI调用设置在包含“动作”按钮的div上。 Onclick,这灰色的页面,以防止双击等 我们已经推出了一个新的选项,它有一个选择框/去按钮组合。对div的操作 - 如何停止1选择?

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

我该如何锁定blockui而不选中?不幸的是,select name =“”区域是动态的,并且会随着从cms构建而不断变化,因此我无法使用select [name =] targetting。如有必要,我可以给它上课。 “其他”目前我所有。我需要建立如果顶部的部分基本上不做任何事情,如果它的选择点击。

$('.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 + 1周的举动提出是不是因为规范acceptible。所以该按钮需要在d上才能提交c。请记住,这些名称阿尔法是动态的,并且在每个页面加载时都会发生变化,因此无法用于定位。

回答

0

如果您的目的是在点击type="submit"input元素时只触发BlockUI覆盖图,则可以更简单地在选择器上进行更具体的操作。

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"是容器的孩子(不一定是直接)与actionbuttons类。然后你不需要任何围绕调用覆盖的回调函数内部的逻辑。另外,您也可以选择将电话直接转到verify

jsfiddle

+0

有联系,其他按钮,并在等,一切都应该触发覆盖,除了选择。 我想出了一个解决方法,用not命令和一个类。 ()。function(){ $('。actionbuttons')。children()。not(“ ; – briansol 2013-02-19 14:43:30