表单提交转到wordpress中的错误页面

时间:2017-11-23 14:15:31

标签: javascript php jquery wordpress woocommerce

我创建了一个收集少量信息的页面,当提交时,即使URL正确,也会加载到完全错误的页面。

这是我的剧本

<script type="text/javascript">
    jQuery(document).ready(function () {
        jQuery(".ch1").change(function () {
            jQuery(".ch1").prop("checked", false);
            jQuery(this).prop("checked", true);
        });
        jQuery(".ch2").change(function () {
            jQuery(".ch2").prop("checked", false);
            jQuery(this).prop("checked", true);
        });
        jQuery("#tour_date").datepicker({
            dateFormat: "yy-mm-dd",
            showOn: "button",
            buttonText: "Select Date",
            buttonImageOnly: true,
            buttonImage: "http://jqueryui.com/resources/demos/datepicker/images/calendar.gif",
        });
    });
    function validateForm() {
        var children = jQuery("#child_cnt").val();
        var adlt_cnt = jQuery("#adlt_cnt").val();
        var tour_date = jQuery("#tour_date").val();
        if (children == "") {
            alert("Please enter No. of children");
            return false;
        }
        if (adlt_cnt == "") {
            alert("Please enter No. of adults");
            return false;
        }
        if (tour_date == "") {
            alert("Please enter tour date");
            return false;
        }
        if (!validateTripTypes()) {
            alert("Please select a trip type");
            return false;
        }
        if (!validateServices()) {
            alert("Please select a service");
            return false;
        }

    }
    function  validateTripTypes() {
        if (jQuery('.ch1:checked').length > 0) {
            return true;
        } else {
            return false;
        }
    }
    function  validateServices() {
        if (jQuery('.ch2:checked').length > 0) {
            return true;
        } else {
            return false;
        }
    }

</script>
[vc_section][vc_column_text]

<form method="post" name="page1_form" onsubmit="return validateForm()" action="[insert_php] bloginfo('url'); [/insert_php]/new-tour-booking-next2/">
    <label>No. of Children:</label> <input name="child_cnt" size="10" type="number" id="child_cnt"/>
    <label>No. of Adults:</label> <input name="adlt_cnt" id="adlt_cnt" size="10" type="number" />
    <label>Tour Date:</label> <input name="tour_date" id="tour_date" size="10" type="text" placeholder="Select Date"/>[/vc_column_text][/vc_section]

    [insert_php]
    $wp_session = WP_Session::get_instance();
    $wp_session['child_cnt'] = 0;
    global $wpdb;
    $trip_types = $wpdb->get_results(
    $wpdb->prepare("SELECT * FROM jtb_trip_types WHERE status = %d", array(1))
    );
    [/insert_php]

    [vc_row][vc_column][vc_text_separator title="Type of Trip" title_align="separator_align_left"][/vc_column][/vc_row][vc_section][vc_column_text]
    [insert_php]
    $trip_type_list = "";
    foreach ($trip_types as $trip_type) {
    $trip_type_list .= '<input name="trip_type_list[]" size="10" type="checkbox" class="ch1" value="'.$trip_type->id.'" /><label>'.$trip_type->trip_type_name.'</label>
    ';
    }
    echo $trip_type_list;
    [/insert_php]

    [/vc_column_text][/vc_section][vc_row][vc_column][vc_text_separator title="Services" title_align="separator_align_left"][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]
    <input name="services_list[]" size="10" type="checkbox" class="ch2" value="1"/> <label>Vehicles</label>
    <input name="services_list[]" size="10" type="checkbox" class="ch2" value="2"/> <label>Hotels</label>
    <input name="services_list[]" size="10" type="checkbox" class="ch2" value="3"/> <label>Both</label>

    [/vc_column_text][/vc_column][/vc_row][vc_row][vc_column][vc_btn title="Next" name="btn_next_form_1" type="submit" align="left"][/vc_column][/vc_row]

    [insert_php]
    //echo count($trip_types);
    [/insert_php]

    </<form>

重定向到正确的网址。这是http://www.jaudatravels.com/new-tour-booking-next2/

但即使URL正确,它也会加载此页面数据。 http://www.jaudatravels.com/tours/

注意:只有当我们通过此页面提交from时才会发生这种情况。 http://www.jaudatravels.com/new-tour-booking/

这种行为有什么理由吗?

1 个答案:

答案 0 :(得分:0)

问题在于您的自定义形式&amp;右侧搜索表单都绑定到单个提交事件。 这就是因为URL只是显示处理发生在服务器端,所以即使URL正确,数据加载的数据也不是您期望的数据。

解决方案: 结尾表单中存在语法错误:</<form>纠正它 或者只是删除该搜索小部件&amp;尝试。

在表单开始时也始终要小心表单结构,不得有任何 div 中断,如

<div>
<form>
<input type="text" name="my_input"/>
</div>
</form>

或者

<table>
<tr>
<form>
<th><td><input type="text" name="my_input"/></td></th>
</tr>
</table>
</form>

所以总是在表单中包含整个元素(如div或table或任何东西),这样就不会发生中断。