一,区别一

先来看一个问题

 <input type="button"   class="btn-upload bg-org-code" name="yushow" id="yushow" value="点击上传组织机构代码证" onclick="uploadBtn();">
          <input type="file" name="upload" style="display:none;" onchange="previewImg(this);" id="upload" accept="image/*"/>

          function uploadBtn(){
     $("#upload").click();
 }

  function previewImg(imgFile){
         console.log(imgFile);//这里打印出是整个input标签
         var extension = imgFile.value.substring(imgFile.value.lastIndexOf("."),imgFile.value.length);//扩展名
         extension = extension.toLowerCase();//把文件扩展名转换为小写
         if ((extension!='.jpg')&&(extension!='.gif')&&(extension!='.jpeg')&&(extension!='.png')&&(extension!='.bmp')){
             layer.msg("对不起,系统仅支持标准格式的照片,请您调整格式后重新上传,谢谢 !");
             $("#yushow").focus();//将焦点定位在文件上传的按钮上,可以直接按确定键再次触发
         }else{
             var path;//预览地址
             if(document.all){//IE
                 imgFile.select();
                     path = document.selection.createRange().text;
             }else{//火狐,谷歌
                 path = window.URL.createObjectURL(imgFile.files[0]);
             }
            $("#yushow").css("background-image","url("+path+")");
            $('#yushow').css('backgroundSize','364px 226px');
            uploadImg(imgFile);
            $("#bnt").attr("disabled", true);
             $("#bnt").css('background','#eee');
         }
     }

     function uploadImg(imgFile){
         var file = imgFile.files[0];//文件对象
         var name = file.name;//图片名
         var uploadAgainDom = document.querySelector('.upload-again')
         var maskDom = document.querySelector('.mask')
         var progressDom = document.querySelector('.progress-bar .progress')
      $("#upload-again").css('display','none');
        $("#mask").css('display','block');
             setTimeout(function() {
                 progressDom.className = 'progress end'
             }, 50)

         var url = '${rc.contextPath}/WXinUploadController.htm?method=UploadFile';
          $.ajaxFileUpload({
                    url: url,
                    secureuri:false,
                    type: 'POST',
                    fileElementId:"upload",
                    dataType: 'json',
                    success: function (data, status)  //服务器成功响应处理函数
                        {
                        var index = data.indexOf('{');
                        data= data.substring(index, data.length);
                        var obj = eval('(' + data + ')');
                              if ("000" == obj.code) {
                                  $("#fssId").val(obj.fssId);
                                  $("#originalFilename").val(obj.originalFilename);
                                  $("#imageType").val(obj.imageType);
                                    $("#mask").css('display','none');
                                    $("#bnt").attr("disabled", false);
                                    $("#bnt").css('background','#f54d4f');
                                } else {
                                  alert("保存有问题,请重试");
                                }

                        },
                        error: function (data, status, e)//服务器响应失败处理函数
                        {
                            alert(e);
                        }
                });

     }

1,现在要做的就是当触发onclick="uploadBtn();这个事件的时候,会执行$("#upload").click();这个方法,通过它去触发onchange事件onchange="previewImg(this);"。当时当我用button按钮的时候并没有触发previewImg(this)事件,只是 uploadBtn事件触发了。所以后来改成<input type="button" >这种方式居然触发了onchange事件。

2,后来因为前台写死了,button标签的class文件中有大量的css脚本。必须用button的按钮,但是一直不触发这个onchange事件,后来就在button标签中加了一个<button  type="button" ,type=“button”>效果就出来了,可以触发onchange事件了。

二,区别二

 <form method="post" action="">
 <input type="text" name="">
 <button>123</button>
 </form>

当现在有个表单,有用户名和密码,当用户名或者密码没有通过校验的时候,页面会自动刷新页面,这个时候,用户需要重新输入用户名和密码,这个还只是两个input框,假如在一个页面上有多个输入框的时候因为一个没有通过校验,就需要所有的全部重写的话,对用户来说是一个非常不好的体验。所以解决方法和区别一是一样的。

方法一:

<input type="button" value="test">
改成input框的形式,这样就不会刷新页面了。
方法二:
<button type="button">
同样在button标签里面加一个type=“button”

input 和button的区别的更多相关文章

  1. button与input[type=”button”]的区别

    button与input[type="button"]的区别 特别感谢 @守护晴天 ,指出了博客中不细致不严谨的地方,也让我学到了更多,更多是觉得抱歉,由于自己的不细致可能误导了一 ...

  2. 关于<button> 没写 type='button' 导致点击时提交以及<button>和<input type="button">的区别

    这是我的第一篇博客,如果写的不好,请见谅 这是一个关于button按钮一个小问题 最近刚开学跟着老师一起写代码,在模仿JAVA web程序设计(慕课版) P61页第三章 Ajax处理XML的代码中发现 ...

  3. <button>和<input type="button"> 的区别

    <button>标签 定义和用法 <button> 标签定义一个按钮. 在 button 元素内部,您可以放置内容,比如文本或图像.这是该元素与使用 input 元素创建的按钮 ...

  4. <button>与<input type="button"> 的区别

    <button> button按钮点击会刷新整个页面 <input type="button">  不会刷新整个页面 本文为本人用来记录自己做的一些东西,如 ...

  5. <button>与<input type="button">的区别

    一.定义和用法 <button> 标签定义的是一个按钮. 在 button 元素内部,可以放置文本或图像.这是<button>与使用 input 元素创建的按钮的不同之处. 二 ...

  6. 解析<button>和<input type="button"> 的区别

    一.定义和用法 <button> 标签定义的是一个按钮. 在 button 元素内部,可以放置文本或图像.这是<button>与使用 input 元素创建的按钮的不同之处. 二 ...

  7. 解析button和input type=”button”的区别

    一.定义和用法 <button> 标签定义的是一个按钮. 在 button 元素内部,可以放置文本或图像.这是<button>与使用 input 元素创建的按钮的不同之处. 二 ...

  8. 【转】解析<button>和<input type="button"> 的区别

    一.定义和用法 <button> 标签定义的是一个按钮. 在 button 元素内部,可以放置文本或图像.这是<button>与使用 input 元素创建的按钮的不同之处. 二 ...

  9. button和input type=button的区别及注意事项

    <button>标签 定义和用法 <button>标签定义一个按钮. 在button元素内部,您可以放置内容,比如文本或图像.这是该元素与使用input元素创建的按钮之间的不同 ...

随机推荐

  1. BZOJ 1299: [LLH邀请赛]巧克力棒 [组合游戏]

    每次一人可以从盒子里取出若干条巧克力棒,或是将一根取出的巧克力棒吃掉正整数长度. Nim游戏多了一个决策:拿出一些石堆 显然只要给对方构造异或和为0的子集就行了 暴枚子集... #include &l ...

  2. BZOJ 3963: [WF2011]MachineWorks [CDQ分治 斜率优化DP]

    传送门 当然了WF的题uva hdu上也有 你的公司获得了一个厂房N天的使用权和一笔启动资金,你打算在这N天里租借机器进行生产来获得收益.可以租借的机器有M台.每台机器有四个参数D,P,R,G.你可以 ...

  3. WPF 圆角输入框

    今天打算来做一个圆角的输入框 默认输入框: 这个输入框不好看,并且在XP 跟 WIN 7  WIN10 效果 都不太一样 我们今天不用模板的方式,而是 最简单的方式 来实现 圆角 输入框: ----- ...

  4. new day

    Learning English is so long,but my english still is not good.I hope that one day I can speak english ...

  5. 关于Git的版本问题

    问题的起源 我在IDEA上不小心修改了文件(加了一行空行)并且被保存了,在GitHub Desktop桌面工具上可以看到changes中有修改记录,并且使用命令行git status也可以看到文件的修 ...

  6. curl模拟post和get请求

    function _post($url,$post_data){     $ch = curl_init();     curl_setopt($ch, CURLOPT_URL, $url);     ...

  7. 有关datatables的非常规教程

    有关datatables的非常规教程 1. //$.fn.dataTable.tables({ visible: true, api: true }).columns.adjust(); table. ...

  8. JDBC编程流程以及详细代码

    加载驱动 打开连接 执行查询 处理结果 清理环境 import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Co ...

  9. 来了解并防范一下CSRF攻击提高网站安全

    看一下我从网上找的原理图,结合举例描述,多看一遍你就知道怎么回事了. CSRF是什么呢?CSRF全名是Cross-site request forgery,是一种对网站的恶意利用,CSRF比XSS更具 ...

  10. Windows Sublime Text 配置Linux子系统(WSL)下的 gcc/g++ 编译环境

    0. 简介(若已了解背景可以跳过此部分) Windows 10 Build 14316以上版本中加入了"Windows系统的Linux子系统"(Windows Subsystem ...