首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >工作中碰到的js问题(disabled表单元素不能提交到服务器)

工作中碰到的js问题(disabled表单元素不能提交到服务器)

作者头像
tandaxia
发布2018-09-27 12:31:44
1.9K0
发布2018-09-27 12:31:44
举报
文章被收录于专栏:谈补锅谈补锅

今天碰到一个奇葩的问题,asp页面表单提交后,有一个文本框<input type="text" name="phone" id="phone" />在后台获取不了,

这个标签在form表单内,也有name属性,但是在后台就是获取不了这个标签的值,而其他的文本框、复选框都可以获取到,这可就奇怪了!

几经周折,终于找到了原因,原来我在提交表单的时候,name = "phone"这个标签此时在一个javascript事件中被禁用了,即完整的该标签状态为:

<input type="text" name="phone" id="phone" disabled />

从而导致在asp后台不能phone这个参数的值。意思应该是phone标签在客户端被禁用了,表单提交就不会提交到服务器去。

解决办法,是设置该标签为可读:<input type="text" name="phone" id="phone" readonly="readonly" />

这样的话,既保证了标签内的东西不能随便修改,也能够提交到服务器里去

-------------------------------------------------------------------------------

---------------------  其他js笔记 -----------------------------------------

------------------------------------------------------------------------------

1、图片预加载中,在谷歌浏览器获取图片的宽高为0px,代码如下:

var img = new Image();

img.src=”images/1.jpg”;

var width=img.width+20;var height=img.height+75;

这段代码在IE/Firefox浏览器中,是能够获取到img对象的宽度和高度,但是在谷歌浏览器中获取宽高的值为0px。

  什么原因?

  应该是这段代码,在谷歌浏览器中图片还没加载完,此时获取图片的宽度和高度自然是0px。解决办法,应该写成:

var img = new Image();

img.onload=function(){

  var width = img.width+20;

  var height = img.height+75;

}

img.src=”images/1.jpg”;

  这样后不管在IE/Firefox, 还是在Google浏览器中,都可以获取图片对象的宽高了

2、想实现一个功能,页面有一个div区域,需要做到点击这个div区域外的其他地方,关闭这个div区域。所以需要做到获取鼠标的坐标,然后根据坐标位置和这个div的位置来隐藏:

//监听鼠标点击
document.onmousedown = function (event) {
    var xPos, yPos; //鼠标坐标
    event = event || window.event;
    if (event.pageX) {
        xPos = event.pageX;
        yPos = event.pageY;
    } else {
        xPos = event.clientX + document.body.scrollLeft - document.body.clientLeft;
        yPos = event.clientY + document.body.scrollTop - document.body.clientTop;
    }

    var tmpObjs = $(".birDetailOn"); //需要隐藏的div块(可能有多个这种div)

    if (tmpObjs.length > 0) {
        var isHidden = true;

        for (var i = 0; i < tmpObjs.length; i++) {
            var obj = tmpObjs[i];
            var top = $(obj).offset().top;  //该div的距离顶部的位置
            var left = $(obj).offset().left;  //距离左边的位置
            var width = obj.offsetWidth;    //该div的宽度
            var height = obj.offsetHeight;  //该div的高度
        
        //判断鼠标坐标是否在div区域之内(在div区域内,就不隐藏该div)
            if (xPos >= left && xPos <= (left + width) && yPos >= top && yPos <= (top + height)) {
                isHidden = false;
            }
        }

        if (isHidden) $(".birDetailOn").css({ "display": "none" }).removeClass("birDetailOn");
    }
}

3、JS中for循环支持break、continue、return关键字,效果和C#一样(break跳出循环,continue跳过当前循环,return方法里循环后所有代码都不在执行);

  对于each循环,不支持break和continue关键字,支持return,return就像是for循环里面的continue关键字效果一样,碰到return当前循环的后面代码不再执行,执行下一个循环;

  each支持return false,碰到return false就像相当于for循环中break,跳出循环,执行循环外后面的代码!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-05-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档