繁体   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