js实现表单提交后不重新刷新当前页面,并停留在当前页面

参考文章:http://www.cnblogs.com/limeiky/p/5599705.html

在填写表单的时候,如果有某项为空或者不合法,在用户点击提交后,页面应当无法跳转并且页面内容不会刷新;只有当用户填写内容满足要求后,点击提交按钮页面才会跳转到指定链接处。

针对这一需求,用js结合<iframe>标签可以简单实现。

html:

       <form class="form-horizontal" role="form" id="config" action="xxx.php" method="POST">
        <div class="settings" id="settings">
            <div class="row">
              <div class="col-md-6">
                <label for="url">扫描网址</label>
                <input type="text" class="form-control" id="url" name="url" placeholder="http://site.com/vuln.php?id=1">
              </div>
            </div>
          <br />
        </div>
        <br />
        <div class="col-md-6" align="center">
            <input type="submit" class="btn " name="submit" value="开始扫描" οnclick="urlNotNull()"/>
        </div>
        <p id="urlNull"  style="display:none;" ><font style="color:red;">扫描网址不可为空!</font></p>
        <p id="urlError"  style="display:none;" ><font style="color:red;">扫描网址格式错误!</font></p>
        <br /><br />
      </form>
        <iframe id="rfFrame" name="rfFrame" src="about:blank" style="display:none;"></iframe> 
JS:

<script type="text/javascript">
 /*动态显示提示信息*/
  function hasClass(obj,cls){  // 判断obj是否有此class
    return obj.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));
  }
  function addClass(obj,cls){ //给 obj添加class
    if(!this.hasClass(obj,cls)){ 
      obj.className += " "+cls;
    }
  }
  function removeClass(obj,cls){ //移除obj对应的class
    if(hasClass(obj,cls)){ 
      var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)');
      obj.className = obj.className.replace(reg," ");
    }
  }
   function checkUrl(url){  //验证url
    var pattern = /(http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/;
    if(url!= ""){ //不为空
        if(!pattern.test(url)){ //若url格式不正确
            addClass(ele.url,"borderRed"); //添加class
            document.getElementById("urlError").style.display = "";
            return false;
        }else{
             removeClass(ele.url,"borderRed"); //移除class
             document.getElementById("urlError").style.display = "none";
             return true;
        }
      removeClass(ele.url,"borderRed"); //移除class
      document.getElementById("urlNull").style.display = "none"; //不显示
    }else{ //为空
      addClass(ele.url,"borderRed"); //添加class
      document.getElementById("urlNull").style.display = ""; //显示
      return false;
    }
  } 
  var ele = { //存放各个input字段obj
      url: document.getElementById("url")
    };
    ele.url.onblur = function(){ //失去焦点则检测
      checkUrl(ele.url.value);
    }
 
 /*提交时检验URL不可为空*/
 function urlNotNull(){
     var url = document.getElementById('url').value;
     if(checkUrl(url)==false){ //输入url不合法
        document.getElementById("urlNull").style.display = ""; //显示
        document.forms[0].target="rfFrame";  //将提交的表单设置为iframe
     }else { //url正确,将提交的表单设置为目标表单
         document.forms[0].target="config";
     }
 }
  </script>
关键:

在FORM表单后添加一个iframe

  <iframe id="rfFrame" name="rfFrame" src="about:blank" style="display:none;"></iframe> 


点保存提交事件里面,当用户输入不满足要求时设置提交的表单为iframe

document.forms[0].target="rfFrame";       这样即提交了FORM保存了数据,页面也不会跳转.

用户输入满足要求,则提交表单为<form>.


  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值