簡體   English   中英

如何防止基於日期比較的表單提交

[英]how to prevent form submission based on date comparison

我有一個表單,我想從用戶那里得到一條消息和一個日期。 提交表單時,它們都不能為空。

如果文本字段為空(這是一個 CKeditor 富文本字段),我會阻止表單提交,並且它工作得很好。 但是,當我想檢查日期時(不能提交今天之前的日期),它不起作用!

這是我正在嘗試做的事情:

<form name="submit_quote" id="submit_quote" action="{% url 'submit_quote' %}" method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    <input  type = 'date'
            class="input_date"
            placeholder="yyyy-mm-dd"
            name='when_is_required_date_{{ item.tag }}{{ item.id }}' 
            id='when_is_required_date_{{ item.tag }}{{ item.id }}' 
            required 
            min="2021-01-31"
            pattern="\d{4}-\d{2}-\d{2}">
    <textarea   name="message" 
                id="message" 
                class="form-control" 
                maxlength="4096" 
                onkeyup="textCounter(this,'counter',4096);" 
                autofocus required 
                style="height: 150px !important; " ></textarea>

    <input  
                disabled  
                maxlength="4" 
                size="4" 
                value="4096" 
                id="counter" 
                style="background-color: rgb(255, 255, 255); border: none; right: 0px;" > 
<div class="form-row">
    <div class="col-12 col-sm-12 col-md-2 col-lg-2 col-xl-2 mx-auto">
        <div class="form-group">
            <button class=" btn btn-gray  text-light" 
                    style="background-color: #6c757d;"
                    type="submit"
                    value="Send" 
                    onClick="return empty()"
                    >
                    Send
            </button>
        </div>
    </div>
</div>
</form>

而且,我檢查如下輸入字段:

<script type="text/javascript">

    
    var today = new Date();
    var dd = String(today.getDate()).padStart(2, '0');
    var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
    var yyyy = today.getFullYear();
    
    today = yyyy + '-' + mm + '-' + dd;
    console.log('today: ', today);
    
    
    $('#submit_quote').submit(function() 
    {
        var dateControl = document.querySelector('.input_date');
        alert('input date: ', dateControl);

        
        if (jQuery("#cke_1_contents iframe").contents().find("body").text() === "" || dateControl <= today)   {
            alert('Please enter your message or a correct date.');
            return false;
        }       
    });
    
</script>

如何防止用戶提交今天之前的日期或空日期?

如果您比較 2 個字符串,則您是在比較 ascii 代碼。

console.log(typeof dateControl); // String
console.log(typeof today); // String

var startOfToday = new Date(today).getTime();
console.log(typeof startOfToday); // Number

暫無
暫無

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

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