无法使用jquery验证表单

时间:2014-07-24 11:28:41

标签: javascript jquery

我无法想到逻辑&在此FIDDLE

实施

问题是: 如果至少有一个文本框(2个,即HR& Min)验证成立,它应该允许提交表格...

例如。如果我在Min文本框中输入“1”点击提交,然后它应该提交表格,因为1是有效的min&反之亦然 但在我的情况下,如果两个文本框值都变为真,则只提交表单

jQuery代码

$(document).ready(function() { 
    $.fn.SubmitForm = function(id) {  //submit the form 

        var hour = $("#time-hr-id" + id).val();
        var mins = $("#time-min-id" + id).val();

        if (isNaN(hour) || hour > 24 || hour < 0.1) {
            var error_msg = 'Hour:Not a valid value';
            alert(error_msg);
            $("#time-hr-id" + id).focus();
        } else if(isNaN(mins) || mins > 60 || mins < 0.1) {
            var error_msg = 'Mins:Not a valid value';
            alert(error_msg);
            $("#time-min-id" + id).focus();
        } else {
            $("#formid" + id).submit();
        }
    };
});

Html代码:

<table cellspacing="0" class="table table-striped TF" style="width: 100%;" id="table6">
<tbody>
<tr class="fltrow">
    <td>
        <input id="flt0_table6" type="hidden" ct="0" class="flt">
    </td>
    <td>
        <input id="flt1_table6" type="hidden" ct="1" class="flt">
    </td>
    <td>
        <input id="flt2_table6" type="hidden" ct="2" class="flt">
    </td>
    <td>
        <input id="flt3_table6" type="hidden" ct="3" class="flt">
    </td>
    <td>
        <input id="flt4_table6" type="hidden" ct="4" class="flt">
    </td>
    <td>
        <input id="flt5_table6" type="hidden" ct="5" class="flt">
    </td>
    <td>
        <input id="flt6_table6" type="hidden" ct="6" class="flt">
    </td>
    <td>
        <input id="flt7_table6" type="hidden" ct="7" class="flt">
    </td>
</tr>
<tr class="success">
    <td style="width: 15%;">
        S.no
    </td>
    <td style="width: 15%;">
        Activity <br>
         Name
    </td>
    <td style="width: 5%;">
        Activity Option
    </td>
    <td style="width: 5%;">
        Duration<br>
         HR:MIN
    </td>
    <td style="width:10%;">
        cals
    </td>
    <td style="width: 5%;">
        distance
    </td>
    <td style="width: 5%;">
        Unit
    </td>
    <td style="width: 15%;">
        Submit
    </td>
</tr>
<tr id="formrowid228" style="display: none;">
    <form method="post" action="/tbft/webapp/logs/insertAcitivity" id="formid228">
    </form>
    <td style="width:5%;">
        1
    </td>
    <td style="width:25%;" class="text-capitalize">
        <a href="http://localhost/tbft/webapp/index.php/logs/activity/228/227">sitting - card playing, playing board games</a>
    </td>
    <td style="width:25%;" class="text-capitalize">
        -
    </td>
    <td style="width:15%;" class="text-capitalize">
        <div style="display:inline-flex;">
            <input maxlength="2" id="time-hr-id228" name="timeHrTxt" size="2" type="text" style="width:35px;text-align:center;" value="" onkeyup="$(this).CalculateCalorie(228);" placeholder=" HR"> : <input onkeyup="$(this).CalculateCalorie(228);" id="time-min-id228" name="timeMinTxt" placeholder=" MIN" type="text" style="width:35px;text-align:center;" maxlength="2" size="2" value="">
        </div>
    </td>
    <td style="width:5%;" class="text-capitalize">
        <input type="text" style="display:none;" name="metsTxt" id="mets-id228" value="1.5"><span id="cals-id228" class="cals">0.00</span>
    </td>
    <td style="width:5%;" class="text-capitalize">
        -
    </td>
    <td style="width:5%;" class="text-capitalize">
        -
    </td>
    <td style="width:5%;" class="text-capitalize">
        <button onclick="$(this).SubmitForm(228);" class="btn btn-success activity-btn" type="button">
        <span class="glyphicon glyphicon-plus"></span>
        </button>
    </td>
</tr>
<tr id="formrowid229" style="display: none;">
    <form method="post" action="/tbft/webapp/logs/insertAcitivity" id="formid229">
    </form>
    <td style="width:5%;">
        2
    </td>
    <td style="width:25%;" class="text-capitalize">
        <a href="http://localhost/tbft/webapp/index.php/logs/activity/229/227">standing - drawing (writing), casino gambling, duplicating machine</a>
    </td>
    <td style="width:25%;" class="text-capitalize">
        -
    </td>
    <td style="width:15%;" class="text-capitalize">
        <div style="display:inline-flex;">
            <input maxlength="2" id="time-hr-id229" name="timeHrTxt" size="2" type="text" style="width:35px;text-align:center;" value="" onkeyup="$(this).CalculateCalorie(229);" placeholder=" HR"> : <input onkeyup="$(this).CalculateCalorie(229);" id="time-min-id229" name="timeMinTxt" placeholder=" MIN" type="text" style="width:35px;text-align:center;" maxlength="2" size="2" value="">
        </div>
    </td>
    <td style="width:5%;" class="text-capitalize">
        <input type="text" style="display:none;" name="metsTxt" id="mets-id229" value="2.3"><span id="cals-id229" class="cals">0.00</span>
    </td>
    <td style="width:5%;" class="text-capitalize">
        -
    </td>
    <td style="width:5%;" class="text-capitalize">
        -
    </td>
    <td style="width:5%;" class="text-capitalize">
        <button onclick="$(this).SubmitForm(229);" class="btn btn-success activity-btn" type="button">
        <span class="glyphicon glyphicon-plus"></span>
        </button>
    </td>
</tr>
<tr id="formrowid230" style="display: none;">
    <form method="post" action="/tbft/webapp/logs/insertAcitivity" id="formid230">
    </form>
    <td style="width:5%;">
        3
    </td>
    <td style="width:25%;" class="text-capitalize">
        <a href="http://localhost/tbft/webapp/index.php/logs/activity/230/227">sitting - reading, book, newspaper, etc.</a>
    </td>
    <td style="width:25%;" class="text-capitalize">
        -
    </td>
    <td style="width:15%;" class="text-capitalize">
        <div style="display:inline-flex;">
            <input maxlength="2" id="time-hr-id230" name="timeHrTxt" size="2" type="text" style="width:35px;text-align:center;" value="" onkeyup="$(this).CalculateCalorie(230);" placeholder=" HR"> : <input onkeyup="$(this).CalculateCalorie(230);" id="time-min-id230" name="timeMinTxt" placeholder=" MIN" type="text" style="width:35px;text-align:center;" maxlength="2" size="2" value="">
        </div>
    </td>
    <td style="width:5%;" class="text-capitalize">
        <input type="text" style="display:none;" name="metsTxt" id="mets-id230" value="1.3"><span id="cals-id230" class="cals">0.00</span>
    </td>
    <td style="width:5%;" class="text-capitalize">
        -
    </td>
    <td style="width:5%;" class="text-capitalize">
        -
    </td>
    <td style="width:5%;" class="text-capitalize">
        <button onclick="$(this).SubmitForm(230);" class="btn btn-success activity-btn" type="button">
        <span class="glyphicon glyphicon-plus"></span>
        </button>
    </td>
</tr>
<tr id="formrowid231" style="display: none;">
    <form method="post" action="/tbft/webapp/logs/insertAcitivity" id="formid231">
    </form>
    <td style="width:5%;">
        4
    </td>
    <td style="width:25%;" class="text-capitalize">
        <a href="http://localhost/tbft/webapp/index.php/logs/activity/231/227">sitting - writing, desk work, typing</a>
    </td>
    <td style="width:25%;" class="text-capitalize">
        -
    </td>
    <td style="width:15%;" class="text-capitalize">
        <div style="display:inline-flex;">
            <input maxlength="2" id="time-hr-id231" name="timeHrTxt" size="2" type="text" style="width:35px;text-align:center;" value="" onkeyup="$(this).CalculateCalorie(231);" placeholder=" HR"> : <input onkeyup="$(this).CalculateCalorie(231);" id="time-min-id231" name="timeMinTxt" placeholder=" MIN" type="text" style="width:35px;text-align:center;" maxlength="2" size="2" value="">
        </div>
    </td>
    <td style="width:5%;" class="text-capitalize">
        <input type="text" style="display:none;" name="metsTxt" id="mets-id231" value="1.8"><span id="cals-id231" class="cals">0.00</span>
    </td>
    <td style="width:5%;" class="text-capitalize">
        -
    </td>
    <td style="width:5%;" class="text-capitalize">
        -
    </td>
    <td style="width:5%;" class="text-capitalize">
        <button onclick="$(this).SubmitForm(231);" class="btn btn-success activity-btn" type="button">
        <span class="glyphicon glyphicon-plus"></span>
        </button>
    </td>
</tr>
<tr id="formrowid232" style="display: none;">
    <form method="post" action="/tbft/webapp/logs/insertAcitivity" id="formid232">
    </form>
    <td style="width:5%;">
        5
    </td>
    <td style="width:25%;" class="text-capitalize">
        <a href="http://localhost/tbft/webapp/index.php/logs/activity/232/227">standing - talking or talking on the phone</a>
    </td>
    <td style="width:25%;" class="text-capitalize">
        -
    </td>
    <td style="width:15%;" class="text-capitalize">
        <div style="display:inline-flex;">
            <input maxlength="2" id="time-hr-id232" name="timeHrTxt" size="2" type="text" style="width:35px;text-align:center;" value="" onkeyup="$(this).CalculateCalorie(232);" placeholder=" HR"> : <input onkeyup="$(this).CalculateCalorie(232);" id="time-min-id232" name="timeMinTxt" placeholder=" MIN" type="text" style="width:35px;text-align:center;" maxlength="2" size="2" value="">
        </div>
    </td>
    <td style="width:5%;" class="text-capitalize">
        <input type="text" style="display:none;" name="metsTxt" id="mets-id232" value="1.8"><span id="cals-id232" class="cals">0.00</span>
    </td>
    <td style="width:5%;" class="text-capitalize">
        -
    </td>
    <td style="width:5%;" class="text-capitalize">
        -
    </td>
    <td style="width:5%;" class="text-capitalize">
        <button onclick="$(this).SubmitForm(232);" class="btn btn-success activity-btn" type="button">
        <span class="glyphicon glyphicon-plus"></span>
        </button>
    </td>
</tr>
<tr id="formrowid233" style="display: none;">
    <form method="post" action="/tbft/webapp/logs/insertAcitivity" id="formid233">
    </form>
    <td style="width:5%;">
        6
    </td>
    <td style="width:25%;" class="text-capitalize">
        <a href="http://localhost/tbft/webapp/index.php/logs/activity/233/227">sitting - talking or talking on the phone</a>
    </td>
    <td style="width:25%;" class="text-capitalize">
        -
    </td>
    <td style="width:15%;" class="text-capitalize">
        <div style="display:inline-flex;">
            <input maxlength="2" id="time-hr-id233" name="timeHrTxt" size="2" type="text" style="width:35px;text-align:center;" value="" onkeyup="$(this).CalculateCalorie(233);" placeholder=" HR"> : <input onkeyup="$(this).CalculateCalorie(233);" id="time-min-id233" name="timeMinTxt" placeholder=" MIN" type="text" style="width:35px;text-align:center;" maxlength="2" size="2" value="">
        </div>
    </td>
    <td style="width:5%;" class="text-capitalize">
        <input type="text" style="display:none;" name="metsTxt" id="mets-id233" value="1.5"><span id="cals-id233" class="cals">0.00</span>
    </td>
    <td style="width:5%;" class="text-capitalize">
        -
    </td>
    <td style="width:5%;" class="text-capitalize">
        -
    </td>
    <td style="width:5%;" class="text-capitalize">
        <button onclick="$(this).SubmitForm(233);" class="btn btn-success activity-btn" type="button">
        <span class="glyphicon glyphicon-plus"></span>
        </button>
    </td>
</tr>
<tr id="formrowid234" style="display: none;">
    <form method="post" action="/tbft/webapp/logs/insertAcitivity" id="formid234">
    </form>
    <td style="width:5%;">
        7
    </td>
    <td style="width:25%;" class="text-capitalize">
        <a href="http://localhost/tbft/webapp/index.php/logs/activity/234/227">sitting - studying, general, including reading and/or writing</a>
    </td>
    <td style="width:25%;" class="text-capitalize">
        -
    </td>
    <td style="width:15%;" class="text-capitalize">
        <div style="display:inline-flex;">
            <input maxlength="2" id="time-hr-id234" name="timeHrTxt" size="2" type="text" style="width:35px;text-align:center;" value="" onkeyup="$(this).CalculateCalorie(234);" placeholder=" HR"> : <input onkeyup="$(this).CalculateCalorie(234);" id="time-min-id234" name="timeMinTxt" placeholder=" MIN" type="text" style="width:35px;text-align:center;" maxlength="2" size="2" value="">
        </div>
    </td>
    <td style="width:5%;" class="text-capitalize">
        <input type="text" style="display:none;" name="metsTxt" id="mets-id234" value="1.8"><span id="cals-id234" class="cals">0.00</span>
    </td>
    <td style="width:5%;" class="text-capitalize">
        -
    </td>
    <td style="width:5%;" class="text-capitalize">
        -
    </td>
    <td style="width:5%;" class="text-capitalize">
        <button onclick="$(this).SubmitForm(234);" class="btn btn-success activity-btn" type="button">
        <span class="glyphicon glyphicon-plus"></span>
        </button>
    </td>
</tr>
<tr id="formrowid235" style="display: none;">
    <form method="post" action="/tbft/webapp/logs/insertAcitivity" id="formid235">
    </form>
    <td style="width:5%;">
        8
    </td>
    <td style="width:25%;" class="text-capitalize">
        <a href="http://localhost/tbft/webapp/index.php/logs/activity/235/227">sitting - in class, general, including note-taking or class discussion</a>
    </td>
    <td style="width:25%;" class="text-capitalize">
        -
    </td>
    <td style="width:15%;" class="text-capitalize">
        <div style="display:inline-flex;">
            <input maxlength="2" id="time-hr-id235" name="timeHrTxt" size="2" type="text" style="width:35px;text-align:center;" value="" onkeyup="$(this).CalculateCalorie(235);" placeholder=" HR"> : <input onkeyup="$(this).CalculateCalorie(235);" id="time-min-id235" name="timeMinTxt" placeholder=" MIN" type="text" style="width:35px;text-align:center;" maxlength="2" size="2" value="">
        </div>
    </td>
    <td style="width:5%;" class="text-capitalize">
        <input type="text" style="display:none;" name="metsTxt" id="mets-id235" value="1.8"><span id="cals-id235" class="cals">0.00</span>
    </td>
    <td style="width:5%;" class="text-capitalize">
        -
    </td>
    <td style="width:5%;" class="text-capitalize">
        -
    </td>
    <td style="width:5%;" class="text-capitalize">
        <button onclick="$(this).SubmitForm(235);" class="btn btn-success activity-btn" type="button">
        <span class="glyphicon glyphicon-plus"></span>
        </button>
    </td>
</tr>
<tr id="formrowid236" style="display: none;">
    <form method="post" action="/tbft/webapp/logs/insertAcitivity" id="formid236">
    </form>
    <td style="width:5%;">
        9
    </td>
    <td style="width:25%;" class="text-capitalize">
        <a href="http://localhost/tbft/webapp/index.php/logs/activity/236/227">standing - reading</a>
    </td>
    <td style="width:25%;" class="text-capitalize">
        -
    </td>
    <td style="width:15%;" class="text-capitalize">
        <div style="display:inline-flex;">
            <input maxlength="2" id="time-hr-id236" name="timeHrTxt" size="2" type="text" style="width:35px;text-align:center;" value="" onkeyup="$(this).CalculateCalorie(236);" placeholder=" HR"> : <input onkeyup="$(this).CalculateCalorie(236);" id="time-min-id236" name="timeMinTxt" placeholder=" MIN" type="text" style="width:35px;text-align:center;" maxlength="2" size="2" value="">
        </div>
    </td>
    <td style="width:5%;" class="text-capitalize">
        <input type="text" style="display:none;" name="metsTxt" id="mets-id236" value="1.8"><span id="cals-id236" class="cals">0.00</span>
    </td>
    <td style="width:5%;" class="text-capitalize">
        -
    </td>
    <td style="width:5%;" class="text-capitalize">
        -
    </td>
    <td style="width:5%;" class="text-capitalize">
        <button onclick="$(this).SubmitForm(236);" class="btn btn-success activity-btn" type="button">
        <span class="glyphicon glyphicon-plus"></span>
        </button>
    </td>
</tr>
<tr id="formrowid237" style="display: none;">
    <form method="post" action="/tbft/webapp/logs/insertAcitivity" id="formid237">
    </form>
    <td style="width:5%;">
        10
    </td>
    <td style="width:25%;" class="text-capitalize">
        <a href="http://localhost/tbft/webapp/index.php/logs/activity/237/227">standing - miscellaneous</a>
    </td>
    <td style="width:25%;" class="text-capitalize">
        -
    </td>
    <td style="width:15%;" class="text-capitalize">
        <div style="display:inline-flex;">
            <input maxlength="2" id="time-hr-id237" name="timeHrTxt" size="2" type="text" style="width:35px;text-align:center;" value="" onkeyup="$(this).CalculateCalorie(237);" placeholder=" HR"> : <input onkeyup="$(this).CalculateCalorie(237);" id="time-min-id237" name="timeMinTxt" placeholder=" MIN" type="text" style="width:35px;text-align:center;" maxlength="2" size="2" value="">
        </div>
    </td>
    <td style="width:5%;" class="text-capitalize">
        <input type="text" style="display:none;" name="metsTxt" id="mets-id237" value="2.0"><span id="cals-id237" class="cals">0.00</span>
    </td>
    <td style="width:5%;" class="text-capitalize">
        -
    </td>
    <td style="width:5%;" class="text-capitalize">
        -
    </td>
    <td style="width:5%;" class="text-capitalize">
        <button onclick="$(this).SubmitForm(237);" class="btn btn-success activity-btn" type="button">
        <span class="glyphicon glyphicon-plus"></span>
        </button>
    </td>
</tr>
<tr id="formrowid243">
    <form method="post" action="/tbft/webapp/logs/insertAcitivity" id="formid243">
    </form>
    <td style="width:5%;">
        1
    </td>
    <td style="width:25%;" class="text-capitalize">
        <a href="http://localhost/tbft/webapp/index.php/logs/activity/243/227">running</a>
    </td>
    <td style="width:25%;" class="text-capitalize">
        -
    </td>
    <td style="width:15%;" class="text-capitalize">
        <div style="display:inline-flex;">
            <input maxlength="2" id="time-hr-id243" name="timeHrTxt" size="2" type="text" style="width:35px;text-align:center;" value="" onkeyup="$(this).CalculateCalorie(243);" placeholder=" HR"> : <input onkeyup="$(this).CalculateCalorie(243);" id="time-min-id243" name="timeMinTxt" placeholder=" MIN" type="text" style="width:35px;text-align:center;" maxlength="2" size="2" value="">
        </div>
    </td>
    <td style="width:5%;" class="text-capitalize">
        <input type="text" style="display:none;" name="metsTxt" id="mets-id243" value="1.5"><span id="cals-id243" class="cals">0.00</span>
    </td>
    <td style="width:5%;" class="text-capitalize">
        -
    </td>
    <td style="width:5%;" class="text-capitalize">
        -
    </td>
    <td style="width:5%;" class="text-capitalize">
         <input  onclick="$(this).SubmitForm(243);"  type="button" value='submit'/>
    </td>
</tr>
<tr id="formrowid245">
    <form method="post" action="/tbft/webapp/logs/insertAcitivity" id="formid245">
    </form>
    <td style="width:5%;">
        2
    </td>
    <td style="width:25%;" class="text-capitalize">
        <a href="http://localhost/tbft/webapp/index.php/logs/activity/245/227">Dancing</a>
    </td>
    <td style="width:25%;" class="text-capitalize">
        -
    </td>
    <td style="width:15%;" class="text-capitalize">
        <div style="display:inline-flex;">
            <input maxlength="2" id="time-hr-id245" name="timeHrTxt" size="2" type="text" style="width:35px;text-align:center;" value="" onkeyup="$(this).CalculateCalorie(245);" placeholder=" HR"> : <input onkeyup="$(this).CalculateCalorie(245);" id="time-min-id245" name="timeMinTxt" placeholder=" MIN" type="text" style="width:35px;text-align:center;" maxlength="2" size="2" value="">
        </div>
    </td>
    <td style="width:5%;" class="text-capitalize">
        <input type="text" style="display:none;" name="metsTxt" id="mets-id245" value="2.5"><span id="cals-id245" class="cals">0.00</span>
    </td>
    <td style="width:5%;" class="text-capitalize">
        -
    </td>
    <td style="width:5%;" class="text-capitalize">
        -
    </td>
    <td style="width:5%;" class="text-capitalize">
         <input  onclick="$(this).SubmitForm(245);"  type="button" value='submit'/>
    </td>
</tr>
<tr id="formrowid246">
    <form method="post" action="/tbft/webapp/logs/insertAcitivity" id="formid246">
    </form>
    <td style="width:5%;">
        3
    </td>
    <td style="width:25%;" class="text-capitalize">
        <a href="localhost/tbft/webapp/index.php/logs/activity/246/227">Playing</a>
    </td>
    <td style="width:25%;" class="text-capitalize">
        -
    </td>
    <td style="width:15%;" class="text-capitalize">
        <div style="display:inline-flex;">
            <input maxlength="2" id="time-hr-id246" name="timeHrTxt" size="2" type="text" style="width:35px;text-align:center;" value="" onkeyup="$(this).CalculateCalorie(246);" placeholder=" HR"> : <input onkeyup="$(this).CalculateCalorie(246);" id="time-min-id246" name="timeMinTxt" placeholder=" MIN" type="text" style="width:35px;text-align:center;" maxlength="2" size="2" value="">
        </div>
    </td>
    <td style="width:5%;" class="text-capitalize">
        <input type="text" style="display:none;" name="metsTxt" id="mets-id246" value="1.5"><span id="cals-id246" class="cals">0.00</span>
    </td>
    <td style="width:5%;" class="text-capitalize">
        -
    </td>
    <td style="width:5%;" class="text-capitalize">
        -
    </td>
    <td style="width:5%;" class="text-capitalize">
        <input  onclick="$(this).SubmitForm(246);"  type="button" value='submit'/>

        </button>
    </td>
</tr>
</tbody>
</table>

1 个答案:

答案 0 :(得分:3)

在这里演示 - http://jsfiddle.net/7TMrc/7/

关键词:

val()函数返回一个字符串,因此如果hours或mins变量的长度为零,则它为空。

如果空白分钟附有有效小时,或空白小时附有有效分钟,我们认为空白是好的。

如果小时或分钟的长度大于零,我们检查它是有效的小时或分钟,并且parseFloat在这里很有帮助。

我们首先进行有效性检查(&#34;我们是否有有效的小时和分钟?&#34;)然后我们会做出是否可以提交的逻辑(&#34;我至少得到了)有效小时或有效分钟?&#34;)。

              $.fn.SubmitForm = function(id) {  //submit the form 

                // These will be strings  
                var hour = $("#time-hr-id" + id).val();
                var mins = $("#time-min-id" + id).val();

                // Assume they are valid
                var valid_hour = true;
                var valid_mins = true;

                // If the hour string is not blank, see if the hour is valid using parseFloat 
                if (hour.length > 0 && isNaN(hour) || parseFloat(hour) > 24 || parseFloat(hour) < 0.1) {
                    valid_hour = false;
                }

                // If the mins string is not blank, see if the min is valid using parseFloat          
                if(mins.length > 0 && isNaN(mins) || parseFloat(mins) > 60 || parseFloat(mins) < 0.1) {
                    valid_mins = false;
                }

                // Now we can do the submit logic more easily. valid_hour and valid_minute
                // will only be false if bad data, not blank data, has been entered.             
                if (!valid_hour) {
                    var error_msg = 'Hour:Not a valid value';
                    alert(error_msg);
                    $("#time-hr-id" + id).focus();
                } else if(!valid_mins) {
                    var error_msg = 'Mins:Not a valid value';
                    alert(error_msg);
                    $("#time-min-id" + id).focus();
                // We have a new test case - we need to ensure that both are not blank!
                } else if (hour == "" & mins == "") {
                    var error_msg = 'Empty mins and hours!';
                    alert(error_msg);
                    $("#time-hr-id" + id).focus();      
                } else {
                    $("#formid" + id).submit();
                }

            };