每当字段等于特定长度时如何调用JS函数?

时间:2019-12-13 19:56:58

标签: javascript html

我有一个函数,当用户在employee_number字段中单击/制表时,该函数当前会运行。我希望它在输入的数字长度等于6时运行,而不必离开该字段,因为当我尝试使用制表符时,它与加载下一个字段(这是下拉菜单的一部分)冲突该功能已运行。

我尝试使用.change来运行它,并将约束放入函数中,但是它没有用,我不知道还有什么尝试。

enter_exit.html

{% extends "base.html" %}

{% load core_tags staticfiles %}

{% block main %}
    <form id="warehouseForm" action="" method="POST" data-employee-activity-lookup-url="{% url 'operations:employee_activity_search' %}" novalidate >
        {% csrf_token %}

        <div>
            <div>
                <div id="employee-name" style="margin-bottom: 10px">&nbsp;</div>
                <label>Employee #</label>
                {{ form.employee_number }}

            </div>

            <div=>
                <label>Work Area</label>
                {{ form.work_area }}
            </div>
            <div style="display: none" id="my-hidden-div">
                <label>Station</label>
                {{ form.station_number }}
            </div>

        </div>

        <div>
            <div>
                <button>Enter Area</button>
                <button>Exit Area</button>
            </div>
        </div>
    </form>

    <script>

        // Grab the employee name and their current active work log (if any)
        $(document).on('blur', "#{{ form.employee_number.id_for_label }}", function(){
            var url = $("#warehouseForm").attr('data-employee-activity-lookup-url');
            var employeeId = $(this).val();
           # ... more fields ...

            if (employeeId !== "") {

              # .. Rest of function ...
        })
     </script>

{% endblock main %}

我也尝试使用keydown / keyup,但是它甚至不会产生对该函数的调用。这就是我修改JS的方式

$("#{{ form.employee_number.id_for_label }}").keydown(()=>{
            var url = $("#warehouseForm").attr('data-employee-activity-lookup-url');
            var employeeId = $(this).val();
            console.log(1); //Not even this appears

            if (employeeId === 6) {
                ...
            }
        })

关于如何进行这项工作的任何想法?

1 个答案:

答案 0 :(得分:1)

如果您的ID选择器("#{{ form.employee_number.id_for_label }}")被解析为有效的引用(例如,"#id-1234-abc"),那么您的下一个问题将是有条件的:

if (employeeId === 6) {…

测试输入值$(this).val()是否为6 —不是多少个字符。为此,您需要类似的东西:

if ( employeeId.length === 6) {…