2013-02-18 2 views
0

У меня есть вызов jQuery BlockUI, настроенный на div, содержащий кнопки «действия». Onclick, этот серый цвет выходит из страницы, чтобы предотвратить двойное нажатие и т. Д. Мы представили новую опцию, и у нее есть комбинация выбора box/go.действие на div - как остановить его на 1 выбор?

Проблема заключается в том, что при изменении окна выбора происходит переход на экран ожидания, прежде чем вы сможете нажать кнопку отправки.

Как я могу нацелить 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 + подать в 1 ход не acceptible из-за спецификации. Таким образом, кнопка должна быть на d для отправки c. Помните, что эти альфа-имена являются динамическими и изменяются при каждой загрузке страницы, поэтому бесполезны для целей.

ответ

0

Если вы намерены ТОЛЬКО запускать наложение BlockUI при нажатии на кнопки input с помощью 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", которые являются дети (не обязательно прямой) контейнера с actionbuttons класса , Тогда вам не нужна никакая логика внутри функции обратного вызова, связанной с созданием наложения. Кроме того, у вас также есть возможность перевести звонок на verify прямо там.

jsfiddle

+0

Есть ссылки, другие кнопки, и такие в то, что все должно вызвать наложение, кроме избранных. Я выяснил обходное решение с не командой и классом. ... $ (». Actionbuttons') дети() нет (" viewmenu") нажмите (функция() { \t $ .blockUI ({сообщение: '

мышление ...

'});}) ; – briansol