zoukankan      html  css  js  c++  java
  • jquery实现form表单提交后局部刷新页面的多种方法

    最近做一个小项目,刚好需要用到搜索功能,实现搜索框内输入数据然后按回车或者点击“提交”,然后给后台数据库处理并返回数据给前端,在前端局部更新数据。

    比如这样的:
    但是遇到了一个小问题,就是form表单下任意输入框输入完按回车提交,整个页面都会刷新,就算我用ajax从后台取出数据返回前端把页面更新了,整个页面还是会立马刷新成原来的样子。

    所以问题又回到了最开始,就是form表单如何实现按回车提交数据处理但不刷新整个页面。
    问题和ajax其实并没有太大关系。是js部分要进行一定的转换。

    测试代码(包含jquery静态库,有网络的同学都不用引入jquery库,可以直接写进html页面看效果):

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>
    <script type="text/javascript">
    
    $(document).ready(function (){
    
    $("#form1").submit(function () {
    $("#show").text("444");
    });
    $("#form2").submit(function () {
    $("#show").text("777");
    //中间可以做一些ajax数据交互,让"777"为后台返回的值
    return false;
    });
    $("#btn").click(function () {
    $("#show").text("555");
    });
    $("#num3").keydown(function(e){ //按下键盘触发函数
    if(e.keyCode==13){ //如果按下的是回车
    $("#show").text("666"); //处理事件
    }
    });
    })
    
    </script>
    
    </head>
    <body>
    
    <form id="form1">
    表单一:<input type="text">
    <input type="submit" value="在左侧输入框按回车或点击此按钮,可以看到文本值333一闪而过为444又回到333">
    </form>
    
    <form id="form2">
    表单二:<input type="text">
    <input type="submit" value="在左侧输入框按回车或点击此按钮,可以看到文本值333改为777不变回去">
    </form>
    
    独立输入框(按回车更新文本为666):<input type="text" id="num3">
    <br>
    
    <button id="btn">点击更改文本值为555</button>
    <span id="show">333</span>
    
    </body>
    </html>

    界面:

    很简单的一个测试代码,看一下就知道这些方法了。

    首先form不能有action跳转,有action跳转是肯定会更新或者跳转到其他页面的

    方法一:给form表单写一个submit函数,在最后加一句 return false; //感觉这篇文章看的人还是蛮多的,特地回来加粗一下,这个方法可以解决大部分情况了。
    (我的例子里演示了加与不加的区别,如果不加return false;同时用submit函数处理,那么整个页面还是会立马刷新,数据改变只是一闪而过)

    方法二:不用<input type="submit">的方式,改为设置一个button按钮,让用户通过手动点击按钮来实现数据更改。
    (这个方法比较不符实际应用,毕竟用户的搜索习惯都是直接按回车。手要拿到鼠标上点击一个按钮费时费力。

    方法三:脱离表单,设置一个独立的输入框<input>,给这个输入框设置回车触发事件。(回车的键盘值为13)
    (这个方法也是可行的,实际项目中可以用<div>或者<li>把<input>输入框组给包含起来,给每个<input>设置按下回车的触发事件,同时提交按钮也要设置相同的事件。然而输入框多了的话比较麻烦,毕竟表单还是表单,是要用回车键处理的)


    以上就是三种不同的解决办法,大家根据自己实际项目中的应用来选择。
    此问题归根结底与ajax并没有直接关系,ajax只是前后端交互的一种手段,最后还是要通过前端来实现数据部分更新的。这个问题是前端的问题。

    我觉得我也是太钻牛角尖了,如果不用form或者直接让用户按一个按钮提交搜索内容不是很轻松就能实现了吗。我非要实现“按回车即可直接搜索”这个功能,好像太刻板了。。。
    有时候,让使用者麻烦一点还能增加在你的网站的滞留时间,不是吗?哈哈

  • 相关阅读:
    C语言的存储类别和动态内存分配
    C语言中复杂的声明
    C语言中typedef的解释_2
    C语言中类型限定符
    C语言文件I/O和标准I/O函数
    C语言中存储类别、链接与内存管理
    C++中static与const成员
    C++多态、虚函数、纯虚函数、抽象类
    sizeof结构体
    杂类
  • 原文地址:https://www.cnblogs.com/dhx96/p/6795057.html
Copyright © 2011-2022 走看看