2013-12-13 7 views
0

У меня есть аналогичный код в другом месте нашего проекта, но я не могу заставить его работать то же самое в этом разделе. Предполагается, что это произойдет, когда нажата кнопка отправки формы, форма привязана до тех пор, пока я не укажу, чтобы отвязать ее, и она открывает диалоговое окно. Когда пользователь нажимает «да» или нет, форма должна отвязываться и отправляться, но часть отправки не работает должным образом.Отправка связанной формы с помощью jQuery UI Dialog

Я совершенно уверен, что unbind работает, потому что я могу нажать «Да» или «Нет», и окно закроется. Затем я могу снова нажать кнопку отправки и успешно отправить форму. Код для этого раздела показано ниже:

$("#injuryStatusForm").bind('submit', function(e) { 
    e.preventDefault(); 
    $("#sendEmailsConfirm").dialog('open'); 
}); 
$("#sendEmailsConfirm").dialog({ 
    autoOpen: false, 
    resizable: false, 
    width:500, 
    modal: true, 
    buttons: { 
     "Yes, Send Emails": function() { 
     $(this).dialog("close"); 
     $("#injuryStatusForm").append('<input type="hidden" name="emails" value="true" />'); 
     $("#injuryStatusForm").unbind("submit").submit(); 
     }, 
     "No, DON'T Send Emails": function() { 
     $(this).dialog("close"); 
     $("#injuryStatusForm").unbind("submit").submit(); 
     }, 
     Cancel: function() { 
     $(this).dialog("close"); 
     } 
    } 
}); 

Это единственная форма на странице, так что не должно быть никаких конфликтов, что путь. Код из другого раздела аналогичен тому, что он показывает форму для создания учетной записи. При нажатии кнопки «Отправить» отображается диалоговое окно jQuery и происходит такая же ситуация. Код для этого раздела ниже:

$("#newAccountForm").bind('submit', function(e) { 
    e.preventDefault(); 
    $("#parentConfirmation").dialog('open'); 
}); 
$("#parentConfirmation").dialog({ 
    closeOnEscape: false, 
    open: function() { $(".ui-dialog-titlebar-close").hide(); }, 
    autoOpen: false, 
    resizable: false, 
    width:600, 
    modal: true, 
    buttons: { 
    "No, I am not a Parent or Legal Guardian": function() { 
     //window.location = "/login/"; 
     $(this).dialog("close"); 
     window.location = "#flash"; 
     $('#flash').html('<p class="error">*You must be a Parent or Legal Guardian to create an account.</p>'); 
    }, 
    "Yes, I am a Parent or Legal Guardian": function() { 
     $(this).dialog("close"); 
     $('#newAccountForm').unbind('submit').submit(); 
    } 
    } 
}); 

Я не могу найти, почему первый набор кода (травмы код состояния) не будет работать, пока новый счет код будет. Какие-либо предложения?

+0

Почему вы отменяете событие отправки вообще? Пользователь только получает диалог подтверждения один раз? –

+0

Да и нет. Он отображается один раз, если пользователь нажимает «Да» или «Нет». Если они нажимают «да» или нет, форма отправляется, а данные сохраняются в базе данных. Он просто закрывает окно, если пользователь нажимает кнопку отмены или кнопку «x» и НЕ отправляет форму. Он остается на одной странице. Я нашел этот метод в другом месте при переполнении стека, чтобы разрешить всплывающие окна диалога jQuery перед отправкой формы. Если есть лучший способ, я буду открыт, чтобы это увидеть. –

+0

Если вы переходите через обратные вызовы кнопок, '' $ ("# injStatusForm") 'разрешает правильный элемент'

'? –

ответ

0

Проблема на самом деле возникла из элемента отправки типа ввода в тело HTML. Элемент submit имеет атрибут имени и вызывает проблемы. После удаления атрибута name представление формы после развязывания формы в диалоге сработало.

<input type="submit" id="submitStatusComment" name="submit" value="Save" /> 

Для

<input type="submit" value="Save" /> 

(я тоже не нужен идентификатор, поскольку он не был использован в любом месте на странице).