簡體   English   中英

使用 preventdefault 后我無法提交表單

[英]I can't get my form to submit after using preventdefault

我在模態結構中有一個表單,我從用戶那里收集一些信息,之后我想將該信息提交到發布請求中,以便我可以在 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條件僅用作簡化,假設我需要檢查的所有實際條件都可以。

我就是發不出去。

解決方案:寫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();
        })
    })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM