ホームページ > 記事 > ウェブフロントエンド > JQuery.validate在ie8下不支持解决方案 - 浮叶
一、在ie8下回有问题的代码
1、JQuery.validate验证框架是通过页面form表单提交验证标签中输入是否符合自己的规则的
<span style="color: #008080;"> 1</span> <span style="color: #0000ff;"><span style="color: #800000;">form </span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="cardTypeFrm"</span><span style="color: #0000ff;">></span> <span style="color: #008080;"> 2</span> <span style="color: #0000ff;"><span style="color: #800000;">table </span><span style="color: #ff0000;">width</span><span style="color: #0000ff;">="100%"</span><span style="color: #ff0000;"> cellspacing</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;"> cellpadding</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;"> class</span><span style="color: #0000ff;">="table_pzh"</span><span style="color: #0000ff;">></span> <span style="color: #008080;"> 3</span> <span style="color: #0000ff;"><span style="color: #800000;">tbody</span><span style="color: #0000ff;">></span> <span style="color: #008080;"> 4</span> <span style="color: #0000ff;"><span style="color: #800000;">tr</span><span style="color: #0000ff;">></span> <span style="color: #008080;"> 5</span> <span style="color: #0000ff;"><span style="color: #800000;">th </span><span style="color: #ff0000;">class</span><span style="color: #0000ff;">="f14 tr pc1"</span><span style="color: #0000ff;">></span>用户名:<span style="color: #0000ff;"></span><span style="color: #800000;">th</span><span style="color: #0000ff;">></span> <span style="color: #008080;"> 6</span> <span style="color: #0000ff;"><span style="color: #800000;">td</span><span style="color: #0000ff;">></span> <span style="color: #008080;"> 7</span> <span style="color: #0000ff;"><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="text"</span><span style="color: #ff0000;"> class</span><span style="color: #0000ff;">="pzh_input1"</span><span style="color: #ff0000;"> id</span><span style="color: #0000ff;">="userName"</span><span style="color: #ff0000;"> name</span><span style="color: #0000ff;">="userName"</span> <span style="color: #0000ff;">/></span> <span style="color: #008080;"> 8</span> <span style="color: #0000ff;"></span><span style="color: #800000;">td</span><span style="color: #0000ff;">></span> <span style="color: #008080;"> 9</span> <span style="color: #0000ff;"></span><span style="color: #800000;">tr</span><span style="color: #0000ff;">></span> <span style="color: #008080;">10</span> <span style="color: #0000ff;"><span style="color: #800000;">tr</span><span style="color: #0000ff;">></span> <span style="color: #008080;">11</span> <span style="color: #0000ff;"><span style="color: #800000;">th </span><span style="color: #ff0000;">class</span><span style="color: #0000ff;">="f14 tr pc1"</span><span style="color: #0000ff;">></span>密码:<span style="color: #0000ff;"></span><span style="color: #800000;">th</span><span style="color: #0000ff;">></span> <span style="color: #008080;">12</span> <span style="color: #0000ff;"><span style="color: #800000;">td</span><span style="color: #0000ff;">></span> <span style="color: #008080;">13</span> <span style="color: #0000ff;"><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="text"</span><span style="color: #ff0000;"> class</span><span style="color: #0000ff;">="pzh_input1"</span><span style="color: #ff0000;"> id</span><span style="color: #0000ff;">="passWord"</span><span style="color: #ff0000;"> name</span><span style="color: #0000ff;">="passWord"</span> <span style="color: #0000ff;">/></span> <span style="color: #008080;">14</span> <span style="color: #0000ff;"></span><span style="color: #800000;">td</span><span style="color: #0000ff;">></span> <span style="color: #008080;">15</span> <span style="color: #0000ff;"></span><span style="color: #800000;">tr</span><span style="color: #0000ff;">></span> <span style="color: #008080;">16</span> <span style="color: #0000ff;"></span><span style="color: #800000;">tbody</span><span style="color: #0000ff;">></span> <span style="color: #008080;">17</span> <span style="color: #0000ff;"></span><span style="color: #800000;">table</span><span style="color: #0000ff;">></span> <span style="color: #008080;">18</span> <span style="color: #0000ff;"><span style="color: #800000;">p </span><span style="color: #ff0000;">class</span><span style="color: #0000ff;">="pc2 undis pl50 error pa"</span><span style="color: #ff0000;"> style</span><span style="color: #0000ff;">="padding-left:118px;margin-top:-10px;"</span><span style="color: #ff0000;"> id</span><span style="color: #0000ff;">="card_next_error"</span><span style="color: #0000ff;">></span>错误信息<span style="color: #0000ff;"></span><span style="color: #800000;">p</span><span style="color: #0000ff;">></span> <span style="color: #008080;">19</span> <span style="color: #0000ff;"><span style="color: #800000;">div </span><span style="color: #ff0000;">class</span><span style="color: #0000ff;">="m20 tc"</span><span style="color: #0000ff;">></span> <span style="color: #008080;">20</span> <span style="color: #0000ff;"><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="submit"</span><span style="color: #ff0000;"> id</span><span style="color: #0000ff;">="submitCardNo"</span><span style="color: #ff0000;"> class</span><span style="color: #0000ff;">="define_button reservation_1"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="登陆"</span> <span style="color: #0000ff;">/></span> <span style="color: #008080;">21</span> <span style="color: #0000ff;"><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="button"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="取消"</span><span style="color: #ff0000;"> class</span><span style="color: #0000ff;">="close_button closePzh ml10"</span> <span style="color: #0000ff;">/></span> <span style="color: #008080;">22</span> <span style="color: #0000ff;"></span><span style="color: #800000;">div</span><span style="color: #0000ff;">></span> <span style="color: #008080;">23</span> <span style="color: #0000ff;"></span><span style="color: #800000;">form</span><span style="color: #0000ff;">></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
其中 name属性和下面js中的rules中的属性一致
2、js绑定validate事件代码如下
<span style="color: #008080;"> 1</span> $(<span style="color: #0000ff;">function</span><span style="color: #000000;">() { </span><span style="color: #008080;"> 2</span> <span style="color: #000000;"> initCardTypeFrmValidate() </span><span style="color: #008080;"> 3</span> <span style="color: #000000;"> }) </span><span style="color: #008080;"> 4</span> <span style="color: #008080;"> 5</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> initCardTypeFrmValidate() { </span><span style="color: #008080;"> 6</span> <span style="color: #008080;"> 7</span> $('#cardTypeFrm'<span style="color: #000000;">).validate({ </span><span style="color: #008080;"> 8</span> onkeyup : <span style="color: #0000ff;">false</span><span style="color: #000000;">, </span><span style="color: #008080;"> 9</span> onfocusout : <span style="color: #0000ff;">false</span><span style="color: #000000;">, </span><span style="color: #008080;">10</span> <span style="color: #000000;"> rules : { </span><span style="color: #008080;">11</span> userName : {required : <span style="color: #0000ff;">true</span><span style="color: #000000;">} </span><span style="color: #008080;">12</span> passWord : {required : <span style="color: #0000ff;">true</span><span style="color: #000000;">} </span><span style="color: #008080;">13</span> <span style="color: #000000;"> }, </span><span style="color: #008080;">14</span> <span style="color: #008080;">15</span> <span style="color: #000000;"> messages : { </span><span style="color: #008080;">16</span> userName : {required : '请输入用户名'<span style="color: #000000;">}, </span><span style="color: #008080;">17</span> passWord : {required : '请输入密码'<span style="color: #000000;">} </span><span style="color: #008080;">18</span> <span style="color: #000000;"> }, </span><span style="color: #008080;">19</span> errorElement : "p" <span style="color: #008080;">20</span> <span style="color: #000000;"> }); </span><span style="color: #008080;">21</span> }
onkeyup : false,表示键盘输入不验证,默认true
onfocusout : false,表示输入框失去焦点不验证,默认true
二、解决方案是,禁止页面的表单提交,实行js中绑定表单提交表单
1、html代码不变
<span style="color: #008080;"> 1</span> <span style="color: #0000ff;"><span style="color: #800000;">form </span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="cardTypeFrm"</span><span style="color: #0000ff;">></span> <span style="color: #008080;"> 2</span> <span style="color: #0000ff;"><span style="color: #800000;">table </span><span style="color: #ff0000;">width</span><span style="color: #0000ff;">="100%"</span><span style="color: #ff0000;"> cellspacing</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;"> cellpadding</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;"> class</span><span style="color: #0000ff;">="table_pzh"</span><span style="color: #0000ff;">></span> <span style="color: #008080;"> 3</span> <span style="color: #0000ff;"><span style="color: #800000;">tbody</span><span style="color: #0000ff;">></span> <span style="color: #008080;"> 4</span> <span style="color: #0000ff;"><span style="color: #800000;">tr</span><span style="color: #0000ff;">></span> <span style="color: #008080;"> 5</span> <span style="color: #0000ff;"><span style="color: #800000;">th </span><span style="color: #ff0000;">class</span><span style="color: #0000ff;">="f14 tr pc1"</span><span style="color: #0000ff;">></span>用户名:<span style="color: #0000ff;"></span><span style="color: #800000;">th</span><span style="color: #0000ff;">></span> <span style="color: #008080;"> 6</span> <span style="color: #0000ff;"><span style="color: #800000;">td</span><span style="color: #0000ff;">></span> <span style="color: #008080;"> 7</span> <span style="color: #0000ff;"><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="text"</span><span style="color: #ff0000;"> class</span><span style="color: #0000ff;">="pzh_input1"</span><span style="color: #ff0000;"> id</span><span style="color: #0000ff;">="userName"</span><span style="color: #ff0000;"> name</span><span style="color: #0000ff;">="userName"</span> <span style="color: #0000ff;">/></span> <span style="color: #008080;"> 8</span> <span style="color: #0000ff;"></span><span style="color: #800000;">td</span><span style="color: #0000ff;">></span> <span style="color: #008080;"> 9</span> <span style="color: #0000ff;"></span><span style="color: #800000;">tr</span><span style="color: #0000ff;">></span> <span style="color: #008080;">10</span> <span style="color: #0000ff;"><span style="color: #800000;">tr</span><span style="color: #0000ff;">></span> <span style="color: #008080;">11</span> <span style="color: #0000ff;"><span style="color: #800000;">th </span><span style="color: #ff0000;">class</span><span style="color: #0000ff;">="f14 tr pc1"</span><span style="color: #0000ff;">></span>密码:<span style="color: #0000ff;"></span><span style="color: #800000;">th</span><span style="color: #0000ff;">></span> <span style="color: #008080;">12</span> <span style="color: #0000ff;"><span style="color: #800000;">td</span><span style="color: #0000ff;">></span> <span style="color: #008080;">13</span> <span style="color: #0000ff;"><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="text"</span><span style="color: #ff0000;"> class</span><span style="color: #0000ff;">="pzh_input1"</span><span style="color: #ff0000;"> id</span><span style="color: #0000ff;">="passWord"</span><span style="color: #ff0000;"> name</span><span style="color: #0000ff;">="passWord"</span> <span style="color: #0000ff;">/></span> <span style="color: #008080;">14</span> <span style="color: #0000ff;"></span><span style="color: #800000;">td</span><span style="color: #0000ff;">></span> <span style="color: #008080;">15</span> <span style="color: #0000ff;"></span><span style="color: #800000;">tr</span><span style="color: #0000ff;">></span> <span style="color: #008080;">16</span> <span style="color: #0000ff;"></span><span style="color: #800000;">tbody</span><span style="color: #0000ff;">></span> <span style="color: #008080;">17</span> <span style="color: #0000ff;"></span><span style="color: #800000;">table</span><span style="color: #0000ff;">></span> <span style="color: #008080;">18</span> <span style="color: #0000ff;"><span style="color: #800000;">p </span><span style="color: #ff0000;">class</span><span style="color: #0000ff;">="pc2 undis pl50 error pa"</span><span style="color: #ff0000;"> style</span><span style="color: #0000ff;">="padding-left:118px;margin-top:-10px;"</span><span style="color: #ff0000;"> id</span><span style="color: #0000ff;">="card_next_error"</span><span style="color: #0000ff;">></span>错误信息<span style="color: #0000ff;"></span><span style="color: #800000;">p</span><span style="color: #0000ff;">></span> <span style="color: #008080;">19</span> <span style="color: #0000ff;"><span style="color: #800000;">div </span><span style="color: #ff0000;">class</span><span style="color: #0000ff;">="m20 tc"</span><span style="color: #0000ff;">></span> <span style="color: #008080;">20</span> <span style="color: #0000ff;"><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="submit"</span><span style="color: #ff0000;"> id</span><span style="color: #0000ff;">="submitCardNo"</span><span style="color: #ff0000;"> class</span><span style="color: #0000ff;">="define_button reservation_1"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="登陆"</span> <span style="color: #0000ff;">/></span> <span style="color: #008080;">21</span> <span style="color: #0000ff;"><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="button"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="取消"</span><span style="color: #ff0000;"> class</span><span style="color: #0000ff;">="close_button closePzh ml10"</span> <span style="color: #0000ff;">/></span> <span style="color: #008080;">22</span> <span style="color: #0000ff;"></span><span style="color: #800000;">div</span><span style="color: #0000ff;">></span> <span style="color: #008080;">23</span> <span style="color: #0000ff;"></span><span style="color: #800000;">form</span><span style="color: #0000ff;">></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
2、js代码中加入绑定提交事件
<span style="color: #008080;"> 1</span> $(<span style="color: #0000ff;">function</span><span style="color: #000000;">() { </span><span style="color: #008080;"> 2</span> <span style="color: #000000;"> initCardTypeFrmValidate() </span><span style="color: #008080;"> 3</span> <span style="color: #008000;">//</span><span style="color: #008000;">优化代码</span> <span style="color: #008080;"> 4</span> $('#cardTypeFrm').submit(<span style="color: #0000ff;">function</span><span style="color: #000000;">() { </span><span style="color: #008080;"> 5</span> <span style="color: #008080;"> 6</span> <span style="color: #0000ff;">if</span> ($('#cardTypeFrm'<span style="color: #000000;">).valid()) { </span><span style="color: #008080;"> 7</span> <span style="color: #008000;">//</span><span style="color: #008000;">通过执行的动作</span> <span style="color: #008080;"> 8</span> <span style="color: #000000;"> } </span><span style="color: #008080;"> 9</span> <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span>;<span style="color: #008000;">//</span><span style="color: #008000;">永远禁止页面表单提交</span> <span style="color: #008080;">10</span> <span style="color: #000000;"> }) </span><span style="color: #008080;">11</span> <span style="color: #000000;"> }) </span><span style="color: #008080;">12</span> <span style="color: #008080;">13</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> initCardTypeFrmValidate() { </span><span style="color: #008080;">14</span> <span style="color: #008080;">15</span> $('#cardTypeFrm'<span style="color: #000000;">).validate({ </span><span style="color: #008080;">16</span> onkeyup : <span style="color: #0000ff;">false</span><span style="color: #000000;">, </span><span style="color: #008080;">17</span> onfocusout : <span style="color: #0000ff;">false</span><span style="color: #000000;">, </span><span style="color: #008080;">18</span> <span style="color: #000000;"> rules : { </span><span style="color: #008080;">19</span> userName : {required : <span style="color: #0000ff;">true</span><span style="color: #000000;">} </span><span style="color: #008080;">20</span> passWord : {required : <span style="color: #0000ff;">true</span><span style="color: #000000;">} </span><span style="color: #008080;">21</span> <span style="color: #000000;"> }, </span><span style="color: #008080;">22</span> <span style="color: #008080;">23</span> <span style="color: #000000;"> messages : { </span><span style="color: #008080;">24</span> userName : {required : '请输入用户名'<span style="color: #000000;">}, </span><span style="color: #008080;">25</span> passWord : {required : '请输入密码'<span style="color: #000000;">} </span><span style="color: #008080;">26</span> <span style="color: #000000;"> }, </span><span style="color: #008080;">27</span> errorElement : "p" <span style="color: #008080;">28</span> <span style="color: #000000;"> }); </span><span style="color: #008080;">29</span> }