【问题标题】:After adding input field in div using jquery form is submitted on enter在使用jquery表单在div中添加输入字段后,在输入时提交
【发布时间】:2018-01-22 10:22:52
【问题描述】:

我对 JavaScript 比较陌生,但我有编程经验。我有这个代码,它允许用户添加多个费用,如图所示。但是在进入页面时附加了 div 输入字段(成本)后,页面被提交。并且选择的 css 不工作(类不工作)。

请帮助我,我不明白为什么页面是在输入字段中的输入键上提交的。

我的代码是:-

<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<jsp:include page="../template.document.head.jsp" />

<script>
    $(function() {
        $("#expenses").addClass('menu_item_active');

        var groupId = $("#id").val();

        if (groupId != '') {
            $("#heading").text("Edit Expense Details");
        } else {
            $("#heading").text("Add New Expense");
        }
    });

    $(document).ready(function() {
        $("#expense_id").change(function() {
            var expense_id = $("#expense_id").val();
            populateSubExpenses(expense_id);
        });
    });

    var subgroups;

    function populateSubExpenses(expense_id){
        var url = "http://" + window.location.host + "/transport/getexpensesbygroup?exp_grp_id="+expense_id;
        $.get(url, function(data) {
            subgroups = data;
            populateSubExp(data, 0);
        }, "json");
    }

    function populateSubExp(data, id){
        var selectedDeviceModel = $('#name');
        if(id != 0)
            selectedDeviceModel = $('#name_' + id);
         selectedDeviceModel.empty();
         selectedDeviceModel.append(' <option value=""> Select Expense Name</option>');
         $.each(data, function(key, value) {
             selectedDeviceModel.append('<option value="'+key+'">'+value+'</option>');
             selectedDeviceModel.trigger("chosen:updated");
         });
    }

    var row = 1;
    function removeStops(row) {
        calTotalCost(row);
        $("#row"+row).remove();
    }

    function addExpense(){
        var htm = "<div class='row'  id='row"+row+"'>" 
                + "<div style='width:215px; height: 24px;float:left;padding-right:10px;margin-top: 0px;'>"
                + "<select name='name' id='name_" + row + "' style='height: 24px; margin-top: 10px;width:150px !important' class='chosen-select-width' tabindex='1'>"
                + "<option value='' label='Select Expense Name' />"
                + "</select>"
                + "</div>"
                + "<div style='width:55px; height: 24px;float:left;padding-right:10px;margin-top: 10px;'>"
                + "<input type='text' name='payment' id='payment_" + row + "' class='txt-field number-field' maxlength='6' style='width:50px;' onfocusout='calTotalCost(" + row + ")' onKeyDown='if(event.keyCode==13) calTotalCost(" + row + ")'/>"
                + "</div>"
                + "<div style='width:305px; height: 24px;float:left;margin-top: 10px;'>"
                + "<textarea name='remark' id='remark_" + row + "' class='txt-field' style='width:300px;'></textarea>"
                + "</div>"
                + "<div style='width:50px; height: 24px;float:left;margin-top: 10px;'>"
                + "<input type='button' value='Remove' class='btn-login' style='font-size: 10px; margin-top: 1px; margin-left: 20px;' onclick='removeStops(" + row + ");'/>"
                + "</div>"
                + "</div>";

        $("#expenseDiv").append(htm);
        populateSubExp(subgroups, row);
        row++;
    }

    function calTotalCost(row) {
        var i = 0;
        var final_payment = 0;
        for(i; i <= row ; i++){
            if(i == 0)
                payment = $('#payment').val();
            else
                payment = $('#payment' + '_' + i).val();
            if (payment != undefined)
                final_payment = parseFloat(final_payment) + parseFloat(payment);
        }
        $('#final_payment').val(final_payment);
    }

</script>

<div class="frm-block-outer" style="width:70%;">
    <div class="headinginner">
        <h3 id="heading" style="margin: 0px;"></h3>
    </div>
    <div class="frm-wrapper" style="width: 980px;">
        <form:form action="${pageContext.request.contextPath}/transport/addexpense" modelAttribute="expenseSubGroup" id="frmLogin" method="post" commandName="expenseSubGroup">
            <div style="float: left;">
                <fieldset class="mem-field-set">
                    <legend>Account Group Details</legend>
                    <form:input path="id" id="id" type="hidden" class="txt-field" />

                    <div class="nmem-input-pair mandatory">
                        <label>Date: <span class="req_field">*</span></label>
                        <div class="row-field">
                            <form:input path="expense.expense_date" id="expense_date" class="txt-field date-field-fy"/>
                            <form:errors path="expense.expense_date" class="field-error"></form:errors>
                        </div>
                    </div>

                    <div class="nmem-input-pair mandatory">
                        <label>Expense Group:<span class="req_field">*</span></label>
                        <div class="row-field">
                            <form:select path="expense.id" id="expense_id" style="height: 24px;width:150px !important" class="chosen-select-width" tabindex="1">
                                <form:option value="" label="Select Account Name" />
                                <form:options items="${groupName}"/>
                            </form:select>
                            <form:errors path="expense.name" class="field-error"></form:errors>
                        </div>
                    </div>

                    <div class="nmem-input-pair mandatory">
                        <label>Through:<span class="req_field">*</span></label>
                        <div class="row-field">
                            <form:select path="expense.partner_id"  style="height: 24px;width:150px !important" id="partner_id" class="chosen-select-width" tabindex="1">
                                <form:option value="" label="Select" />
                                <form:options items="${partners}"/>
                            </form:select>
                            <form:errors path="expense.partner_id" class="field-error"></form:errors>
                        </div>
                    </div>

                    <fieldset> 
                        <hr>
                        <div style="margin-left: 100px;" id="expenseDiv">

                            <div style="float: left;width: 685px;margin-top: 10px;margin-bottom: 10px;">
                                <div style="float: left; width: 200px; text-align: center;">
                                    <label>Expense</label>
                                </div>

                                <div style="float: left; width: 100px; text-align: center;">
                                    <label>Cost</label>
                                </div>

                                <div style="float: left; width: 300px; text-align: center;">
                                    <label>Description</label>
                                </div>
                            </div>
                            <div style="width:215px; height: 24px;float:left;padding-right:10px;">
                                <form:select path="name"  style="height: 24px;width:150px !important" class="chosen-select-width" tabindex="1">
                                    <form:option value="" label="Select Expense Name" />
                                </form:select>
                            </div>
                            <div style="width:55px; height: 24px;float:left;padding-right:10px;">
                                <form:input path="payment" id="payment" class="txt-field number-field" maxlength="6" style="width:50px;" onfocusout="calTotalCost(0)" onKeyDown="if(event.keyCode==13) calTotalCost(0)"/>
                            </div>
                            <div style="width:305px; height: 24px;float:left;">
                                <form:textarea path="remark" class="txt-field" style="width:300px;"></form:textarea>
                            </div>
                            <div style="width:50px; height: 24px;float:left;">
                                <a onclick="addExpense();"><input title="Add" class="jqueryaddrow" type="button"  style="font-size: 10px; margin-top: -1px; margin-left: 20px;"></a>
                            </div>
                        </div>
                    </fieldset>

                    <fieldset>
                        <hr>
                        <div class="nmem-input-pair mandatory">
                            <label>Total Payment:<span class="req_field">*</span></label>
                            <div class="row-field">
                                <form:input path="expense.final_payment" id="final_payment" class="txt-field number-field" maxlength="6" style="width:50px;"/>
                                <form:errors path="expense.final_payment" class="field-error"></form:errors>
                            </div>
                        </div>

                        <div class="nmem-input-pair">
                            <label>Remark:<span class="req_field"></span></label>
                            <div class="row-field">
                                <form:textarea path="expense.remark" class="txt-field"></form:textarea>
                            </div>
                        </div>
                    </fieldset>
                </fieldset>
            </div>

            <div class="mem-input-pair" style="margin-left: 184px;">
                <div class="login-btn gapl-110">
                    <a href="${pageContext.request.contextPath}/transport/expense">
                        <input type="button" value="Cancel" class="btn-grey" style="width:105px;" />
                    </a>
                </div>
                <div class="login-btn">
                    <input name="updatebtn" id="updatebtn" type="submit" value="Save" class="btn-login" style="width:105px;" />
                </div>
            </div>
        </form:form>
    </div>
</div>
<jsp:include page="../template.document.tail.jsp" />

【问题讨论】:

  • 请使用 Stack Snippets([&lt;&gt;] 工具栏按钮)通过 runnable minimal reproducible example 演示问题来更新您的问题。
  • “请帮助我如何避免 onenter 提交附加 div 输入字段” - 请在此处提问之前做一些适当的研究。 stackoverflow.com/questions/895171/…
  • @CBroe 请查看我的代码。我正在做一些其他的工作。但它是在输入时提交的。
  • 什么“其他工作进入”?请具体说明,至少说明您指的是脚本的哪一部分或具体的功能。

标签: javascript java css jsp jquery-chosen


【解决方案1】:

根据 html 表单将在输入时触发提交,但如果您想使用 jquery 阻止它,您可以通过以下代码阻止它

 $("#frmLogin").on("submit", function(){
      return false;
 })

【讨论】:

  • 我想知道为什么我的表单在输入时提交。当我在回车键上调用其他函数时。
  • 因为如果您将任何输入包装在表单中,则 enter 是默认的浏览器行为。
猜你喜欢
  • 1970-01-01
  • 2010-09-23
  • 2015-06-17
  • 1970-01-01
  • 2013-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多