1. <script type="text/javascript">
  2. function checkImage(){
  3. var imageValue = document.getElementById("actorCard:imageField:image").value;
  4. if(imageValue !== ""){
  5. document.getElementById("actorCard").sumbit();
  6. }else if(imageValue == ""){
  7. alert("image field required !");
  8. document.getElementById("actorCard:imageField:image").focus();
  9. return false;
  10. }
  11. }
  12. </script>

上面那个代码是正确的,但是漏了这点:当用户输入一个或者多个空格的时候,它也可以通过验证的。所以要想更周全些就要加上这句话了:fieldValue = fieldValue.replace(/\s/gi,"");来把空格的情况去除掉。(在var定义的变量之后加上)

按钮的代码:

  1. <h:commandButton id="save" value="Save"
  2. onclick="return checkImage()" action="#{actorCardHome.persist}"
  3. disabled="#{!actorCardHome.wired}"
  4. rendered="#{!actorCardHome.managed}" />

这里特别说明下:

(1)在按钮的事件onclick="return checkImage()",而不是onclick="checkImage()",否则达不到效果它同样会提交表单。

(2) JS的判断空值和非空值这样来写:

if(imageValue !== "") 和 if(imageValue == "")

(3)我这里的id可能是比较特殊的,因为我的是JSF的页面,所以要看源代码才可以知道id。

(4)document.getElementById("actorCard:imageField:image").focus();这一句重新定位到那个必须填的字段的位置。这句比较好。特别提醒的是:这句后面的return false;如果没有它的话表单同样会提交,所以一定要记得把这句加上。

  1. 上面的代码已经很完善了,但是我再次看的时候又有些遗漏的地方,所以我在把它补充完整。(因为我最近在做模板的时候出现了问题)
  2. 1. signin.jsp
  3. <script type="text/javascript" src="js/common.js"></script>
  4. <s:form name="loginForm" action="./openid.servlet"  method="post">
  5. <table>
  6. <tr>
  7. <td align="right">Username:</td>
  8. <td align="left">
  9. <input type="text" id="username" name="username" value="" class="joinField"><br />
  10. <span id="error_username"></span>
  11. </td>
  12. </tr>
  13. <tr>
  14. <td align="right">Password:</td>
  15. <td align="left">
  16. <input type="password" id="password" name="password" value="" class="joinField"><br />
  17. <span id="error_password"></span></td>
  18. </tr>
  19. <tr>
  20. <td align="right">
  21. <input type="submit" id="loginButton" onclick="return checkField();" value="login" class="btn-submit">
  22. </td>
  23. <td align="left"><br />
  24. <span id="error_login" class="error"></span></td>
  25. </tr>
  26. </table>
  27. </s:form>
  28. 这里我要说明三点:这个也是我出错的地方所在。
  29. (1)这一句:<input type="submit" id="loginButton" onclick="return checkField();" value="login">里面的type="submit",非常重要,由于当时种种原因我不小心写成了type="button",所以导致我的执行在执行JS的时候总是提交不了。document.getElementById("loginForm").sumbit(); 这句是JS的提交代码。
  30. (2)document.getElementById("loginForm").sumbit(); 这里的loginForm是指的是form表单的ID号而不是"提交按钮"的ID号,这里一定要注意。
  31. (3)document.getElementById("error_username").innerHTML = "username is not null !";这里的"error_username"指的是ID哦,因为我当时在原有的代码上改没注意它当时是class,然后就报错,找了我好半天的功夫啊!
  32. 2. common.js
  33. function checkField(){
  34. var usernameValue = document.getElementById("username").value;
  35. var passwordValue = document.getElementById("password").value;
  36. usernameValue = usernameValue.replace(/\s/gi,"");
  37. passwordValue = passwordValue.replace(/\s/gi,"");
  38. if(usernameValue !== "" && passwordValue !== ""){
  39. 这里不能写下面那个语句,如果写了后会提交form表单2次。而应该直接写return true;就可以了。切记!!
  40. //document.getElementById("loginForm").submit();
  41. return true;
  42. }else if(usernameValue == "" && passwordValue == ""){
  43. document.getElementById("error_username").innerHTML = "username is not null !";
  44. document.getElementById("error_password").innerHTML = "password is not null !";
  45. return false;
  46. }else if(usernameValue !== "" && passwordValue == ""){
  47. document.getElementById("password").focus();
  48. document.getElementById("error_username").innerHTML = "";
  49. document.getElementById("error_password").innerHTML = "password is not null !";
  50. return false;
  51. }else if(passwordValue !== "" && usernameValue == ""){
  52. document.getElementById("username").focus();
  53. document.getElementById("error_password").innerHTML = "";
  54. document.getElementById("error_username").innerHTML = "username is not null !";
  55. return false;
  56. }
  57. }

http://blog.csdn.net/haqer0825/article/details/8152829

http://solodu.iteye.com/blog/421587

web 界面设计---js提交表单的更多相关文章

  1. 利用JS提交表单的几种方法和验证(必看篇)

    第一种方式:表单提交,在form标签中增加onsubmit事件来判断表单提交是否成功 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <scr ...

  2. JS提交表单页面不跳转、JS下载、动态创建from

    JS下载 function downloadFile(id) {     var url =  "<%=request.getContextPath()%>/cer/downlo ...

  3. 利用JS提交表单的几种方法和验证

    第一种方式:表单提交,在form标签中增加onsubmit事件来判断表单提交是否成功 <script type="text/javascript"> function ...

  4. js提交表单错误:document.form.submit() is not a function

    今天在写JS时,遇上这么个错误:"document.form.submit() is not a function",经过一番搜索,最终找到了修复方法. 这个错误一般是由于表单&l ...

  5. 使用jquery.form.js提交表单上传文件

    方法: 1.formSerilize()  用于序列化表单中的数据,并将其自动整理成适合AJAX异步请求的URL地址格式. 2.clearForm()   清除表单中所有输入值的内容. 3.restF ...

  6. 什么?你还不会通过纯js提交表单?

    如果程序已经封装好了, 不管后台是java .asp.net   .还是php   ?这个时候你的客户突然追加说我要 追加表单验证?   what  妇产科    怎么办? submit  自带刷新效 ...

  7. 原生js提交表单

    /********************* 表单提交 ***********************/ function ajax(options) { options = options || { ...

  8. 使用JS提交表单

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. js 提交表单添加csrf

    function post(path, shipmentMap, method) { method = method || "post"; // Set method to pos ...

随机推荐

  1. PHP+Apache2.x+phpMyAdmin安装和配置

    1>各个部件的下载 目前在windows下开发 PHP官网下载地址:https://windows.php.net/download PHP有TS(ThreadSafe)和NTS两个版本,所以按 ...

  2. SSM调用数据库存储过程

    ServiceImpl中: Map<String,Object> map=new HashMap<String,Object>(); map.put("bid&quo ...

  3. Saving James Bond - Hard Version

    07-图5 Saving James Bond - Hard Version(30 分) This time let us consider the situation in the movie &q ...

  4. 什么样的经历,才能领悟成为架构师? >>>

    什么样的经历,才能领悟成为架构师? >>> 本文主要分析 SpringBoot 的启动过程. SpringBoot的版本为:2.1.0 release,最新版本. 一.时序图 还是老 ...

  5. [转]android 如何获取第三方app的sha1值

    对于android 应用的sha1值和md5值的获取,如果是我们自己的应用,不论是获取测试的和正式的都是比较方便的.但是如何去获取别人开发的app的sha1和md5呢,并且我们只有apk有没有相关的文 ...

  6. 修改flex chart中Legend的字体样式

    最近在弄FLEX的图表, 发现CHART 中的Legend 的字体通过直接设置Style 并没有办法改变字体大小. google 了下, 发现了这个方法: 通过派生LegendItem类,并设置Leg ...

  7. web.py 使用 db.select 返回的数据只能遍历一次

    2013-10-05 23:04:33|   1. web.py 使用 db.select 返回的数据只能遍历一次import webdb = web.database(dbn='mysql', db ...

  8. 寒武纪camp Day5

    补题进度:6/10 A(状压dp) 题意: 有n个数字1,2,...,n,有m个限制(a,b),表示至少要有一个数字a排在数字b的前面 你需要构造出一个含有数字1~n的序列,数字可以重复多次,要求该序 ...

  9. loj6169 相似序列(可持久化线段树)

    题目: https://loj.ac/problem/6169 分析: 如果是要求两段序列全等的话,有一个套路: 对于{a1,a2,a3} {a4,a5,a6} 设一个素数p,那么如果p^a1+p^a ...

  10. freeswitch对媒体的处理的三种方式

    一.默认方式:媒体通过freeswitch, RTP被freeswtich转发, freeswitch控制编码的协商并在协商不一致时提供语音编码转换能力, 支持录音,二次拨号等.   二.代理模式: ...