Настройка литерал объекта возможных действий:
var actions = {
action1: function(elem) {
// If you just want to submit the form normally
$(elem).closest('form').submit();
...
},
action2: function(elem) {
// If you wanted to ajax load a url-field into a div
var url = $('#url_field').val();
$('.display').load(url);
...
}
}
Затем написать селектор, который захватывает все кнопки (быть как вам нужно быть) и прикрепить каждую функцию на основе идентификатора элемента к обработчик кликов. Используя делегирование событий ('$ .live()'), вы можете увеличить производительность для случая, когда есть несколько кнопок или когда кнопки добавляются динамически.
$('input[type=button]').live('click', function(e){
actions[$(this).attr('id')](this);
});
Это назвали бы смежный действие в переменной «действия» на каждый клик (вероятно, вы должны подтвердить, что функция существует, а).
Внутри каждой из функций действия вы можете отправлять разные URL-адреса или отправлять ajax или загружать новую информацию или делать что-либо, что хотите. Что касается «repost [ing] form», это будет серверная функция, которая предварительно заполняла каждый элемент ввода своим предыдущим значением, подобно тому, как вы делали бы с недопустимым представлением.
Это дает вам одну строку кода для обработки событий, а затем чистую структуру для построения каждого из ваших действий в
Я сомневаюсь, что мой совет гарантирует целый ответ, так что вот что: полезно использовать кнопки, разработанные таким образом, чтобы действие, которое вы хотите, чтобы пользователь выполнял, выделяется больше всего. Это звучит как здравый смысл, но иногда бывает трудно обойтись, не обманывая его в глазах пользователя. –
>> Есть несколько способов реализовать это. Можете ли вы записать их? –
Я написал несколько ;-) – queen3