javascript表单验证冲突

时间:2013-08-18 18:54:39

标签: javascript validation

我已经实现了一个简单的javascript验证,但验证和表单提交永远不会一起发生......

当我使用“onsubmit”(如下所示)时,它将转到下一页而不进行验证

如果我在表格的末尾使用“onclick”

<input type="button" name="submit" id="send" value="Search Flights" onclick="return validate_booking_form();" />
</form>  

它将验证输入..但表格即使输入正确也不会提交

这是我用过的代码 // Javascript验证

function validate_booking_form()
{
    chk_fromcity();
    chk_tocity();
    chk_depature_date();                   

}

function chk_fromcity()
{
    var from_city = $('#from_cities').val();
    if (from_city == '')
    {
        $("#from_cities").removeClass('fieldInput');
        $("#from_cities").addClass('error');
        $("#errormsg_from").fadeTo(200, 1, function()
        {
            $(this).html('Please Enter a City').addClass('errormsg');                   
        })
    }
    else
    {
        $('#from_cities').removeClass('error'); 
        $('#from_cities').addClass('fieldInput');
        $("#errormsg_from").fadeTo(200, 1, function()
        {
            $(this).html('').removeClass('errormsg');                   
        })             
    } 
}

和表格

<form method="POST" action="../controller/booking.php" name="search_flights_names" onsubmit="return validate_booking_form();" >

    /// Form content 
<div class="form_input_container">
                        <div class="form_input">
     <input type="text" id="from_cities" name="from_city" class="fieldInput" onblur="return chk_fromcity()" /> 
                         </div>
</div>

<input type="submit" name="submit" id="send" value="Search Flights" />
</form>

3 个答案:

答案 0 :(得分:0)

提交是正确使用的按钮。

在表单元素中尝试使用putton onsubmit并在那里进行验证,而不是在click事件上进行验证。这样按Enter键不会绕过所有验证。

答案 1 :(得分:0)

尝试使用Jquery validate。我认为它应该可以解决你的问题

答案 2 :(得分:0)

从chk_fromcity()返回false以停止表单发布到操作。

function chk_fromcity()
{
    var from_city = $('#from_cities').val();
    if (from_city == '')
    {
        $("#from_cities").removeClass('fieldInput');
        $("#from_cities").addClass('error');
        $("#errormsg_from").fadeTo(200, 1, function()
        {
            $(this).html('Please Enter a City').addClass('errormsg');                   
        });

        return false;
    }

    $('#from_cities').removeClass('error'); 
    $('#from_cities').addClass('fieldInput');
    $("#errormsg_from").fadeTo(200, 1, function()
    {
        $(this).html('').removeClass('errormsg');                   
    })             

    // return  true; // default is true which is why you were passing the validation
}