Я не могу получить форму для отправки после использования protectdefault - PullRequest
0 голосов
/ 09 октября 2019

У меня есть форма внутри модальной структуры, где я вспоминаю некоторую информацию от пользователя, после чего я хочу отправить эту информацию в запрос на публикацию, чтобы я мог обработать ее в python.

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

Я использую .preventDefault(), чтобы остановить отправку и проверить значения. Программа отправляет сообщения нормально, пока я не использую preventDefault, и фактически не публикует сообщения при его использовании.
Проблема в том, что после выполнения всех условий, она должна отправлять сообщения, но не делает это иЯ не знаю почему.

Вот код формы:

<form id="forminout" action="/in_out" method="post">
        <div class="modal fade bd-example-modal-lg" tabindex="-1" role="dialog" id="incomeModal">
            <div class="modal-dialog modal-lg" role="document">
                <div class="modal-content">
                    <div class="modal-header">
                        <h5 class="modal-title">Add your new income</h5>
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                             <span aria-hidden="true">&times;</span>
                        </button>
                    </div>
                    <div class="modal-body" id="new_incomes">
                        <div style="padding:3%">
                            <input step=".01" type="number" class="form-control input-sm" name="incoming" min="0" placeholder="0">
                            <select class="incomselect" name="incomeselects" style="height:30px;">
                                <option selected disabled>This income is coming from?</option>
                                <option value="rent">Rents</option>
                                <option value="salary">Salary</option>
                                <option value="invest_reveneu">Investments reveneus</option>
                                <option value="others">Others</option>
                            </select>
                            <select class="incomdate" name="incomedate" style="height: 30px;">
                                <option selected disabled>Incoming date</option>
                                <option value=5>1 - 5</option>
                                <option value=10>6 - 10</option>
                                <option value=15>11 - 15</option>
                                <option value=20>16 - 20</option>
                                <option value=25>21 - 25</option>
                                <option value=31>26 - 31</option>
                            </select>
                        </div>
                    </div>
                    <div class="modal-footer">
                        <button class="btn btn-primary" id="addinbutt" type="submit">Save changes</button>
                        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
                    </div>
                </div>
            </div>
        </div>
   </form>

, который работает нормально, потому что сообщение действительно происходит.

А вот«упрощенный» код почтового запроса:

$("document").ready(function(){
    $("form").on("submit", function(e){
        errors = 0;
        e.preventDefault();
        if (errors==0)
        {
            document.getElementById("#forminout").submit();
        }
    })
})

В этом случае условие errors==0 используется только как упрощение, предполагая, что все действительные условия, которые мне нужно проверить, в порядке.

Я просто не могу отправить это сообщение.

1 Ответ

0 голосов
/ 09 октября 2019

решение: напишите this.submit() или e.target.submit() вместо doc.getElById().submit()


$("document").ready(function(){
    $("#forminout").on("submit", function(e){
        e.preventDefault();
        // ur conditions ...
        this.submit();
    })
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="forminout" action="/in_out" method="post">
        <div class="modal fade bd-example-modal-lg" tabindex="-1" role="dialog" id="incomeModal">
            <div class="modal-dialog modal-lg" role="document">
                <div class="modal-content">
                    <div class="modal-header">
                        <h5 class="modal-title">Add your new income</h5>
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                             <span aria-hidden="true">&times;</span>
                        </button>
                    </div>
                    <div class="modal-body" id="new_incomes">
                        <div style="padding:3%">
                            <input step=".01" type="number" class="form-control input-sm" name="incoming" min="0" placeholder="0">
                            <select class="incomselect" name="incomeselects" style="height:30px;">
                                <option selected disabled>This income is coming from?</option>
                                <option value="rent">Rents</option>
                                <option value="salary">Salary</option>
                                <option value="invest_reveneu">Investments reveneus</option>
                                <option value="others">Others</option>
                            </select>
                            <select class="incomdate" name="incomedate" style="height: 30px;">
                                <option selected disabled>Incoming date</option>
                                <option value=5>1 - 5</option>
                                <option value=10>6 - 10</option>
                                <option value=15>11 - 15</option>
                                <option value=20>16 - 20</option>
                                <option value=25>21 - 25</option>
                                <option value=31>26 - 31</option>
                            </select>
                        </div>
                    </div>
                    <div class="modal-footer">
                        <button class="btn btn-primary" id="addinbutt" type="submit">Save changes</button>
                        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
                    </div>
                </div>
            </div>
        </div>
   </form>

РЕДАКТИРОВАТЬ:

Вы даже можете написать это на основе параметра e:

$("document").ready(function(){
        $("#forminout").on("submit", function(e){
            e.preventDefault();
            // ur conditions ...
            e.target.submit();
        })
    })
...