jquery input选择弹框

Posted 求知若渴 虚心若愚

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery input选择弹框相关的知识,希望对你有一定的参考价值。

 

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="jquery.plugin.js"></script>
<link rel="stylesheet" type="text/css" href="jquery.plugin.css" />
<script type="text/javascript">
    jQuery.fn.selectCity = function(targetId) {
        var _seft = this;
        var targetId = $(targetId);

        this.click(function() {
            var A_top = $(this).offset().top + $(this).outerHeight(true); 
            var A_left = $(this).offset().left;
            targetId.bgiframe();
            targetId.show().css({
                "position" : "absolute",
                "top" : A_top + "px",
                "left" : A_left + "px"
            });
        });

        targetId.find("#selectItemClose").click(function() {
            targetId.hide();
        });

        targetId.find("#selectSub :checkbox").click(function() {
            targetId.find(":checkbox").attr("checked", false);
            $(this).attr("checked", true);
            _seft.val($(this).val());
            targetId.hide();
        });
        $(document).click(function(event) {
            if (event.target.id != _seft.selector.substring(1)) {
                targetId.hide();
            }
        });

        targetId.click(function(e) {
            e.stopPropagation();
        });

        return this;
    };

    $(function() {
        $("#address").selectCity("#selectItem");
        $("#address2").selectCity("#selectItem2");
    });
</script>
</head>
<body>

    <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <input type="text" name="address" id="address" size="33"><br>
    


    <div id="selectItem" class="selectItemhidden">
        <div id="selectItemAd" class="selectItemtit bgc_ccc">
            <h2 id="selectItemTitle" class="selectItemleft">请选择城市</h2>
            <div id="selectItemClose" class="selectItemright">关闭</div>
        </div>
        <div id="selectItemCount" class="selectItemcont">
            <div id="selectSub">
                <input type="checkbox" name="cr01" id="cr01" value="北京1" />
                <label for="cr01">北京1</label> 
                <input type="checkbox" name="cr02" id="cr02" value="北京2" />
                <label for="cr02">北京2</label> 
                <input type="checkbox" name="cr03" id="cr03" value="北京3" />
                <label for="cr03">北京3</label>
                <input type="checkbox" name="cr09" id="cr09" value="北京4" />
                <label for="cr09">北京4</label>
                <input type="checkbox" name="cr09" id="cr09" value="北京4" />
                <label for="cr09">北京4</label>
                <input type="checkbox" name="cr09" id="cr09" value="北京4" />
                <label for="cr09">北京4</label>
                <input type="checkbox" name="cr09" id="cr09" value="北京4" />
                <label for="cr09">北京4</label>
                <input type="checkbox" name="cr09" id="cr09" value="北京4" />
                <label for="cr09">北京4</label>
            </div>
        </div>
    </div>
<!-- 
    <input type="text" name="address2" id="address2" size="20">
    <div id="selectItem2" class="selectItemhidden">
        <div id="selectItemAd" class="selectItemtit bgc_ccc">
            <h2 id="selectItemTitle" class="selectItemleft">请选择城市</h2>
            <div id="selectItemClose" class="selectItemright">关闭</div>
        </div>
        <div id="selectItemCount" class="selectItemcont">
            <div id="selectSub">
                <input type="checkbox" name="cr04" id="cr04" value="北京1" />
                <label for="cr04">北京1</label> 
                <input type="checkbox" name="cr05" id="cr05" value="北京2" />
                <label for="cr05">北京2</label> 
                <input type="checkbox" name="cr06" id="cr06" value="北京3" />
                <label for="cr06">北京3</label>
                <input type="checkbox" name="cr07" id="cr07" value="北京4" />
                <label for="cr07">北京4</label>
            </div>
        </div>
    </div>
 -->
</body>
</html>
View Code

jquery.plugin.css

body{font-size:12px;}

#selectItem{background:#FFF;position:absolute;top:0px;left:center;border:1px solid #000;overflow:hidden;width:240px;z-index:1000;}
.selectItemtit{line-height:20px;height:20px;margin:1px;padding-left:12px;}
.bgc_ccc{background:#E88E22;}
.selectItemleft{float:left;margin:0px;padding:0px;font-size:12px;font-weight:bold;color:#fff;}
.selectItemright{float:right;cursor:pointer;color:#fff;}
.selectItemhidden{display:none;}
.selectItemcont{padding:8px;}
/*.selectItemcls{clear:both;font-size:0px;height:0px;overflow:hidden;}*/
/*#selectItem2{background:#FFF;position:absolute;top:0px;left:center;border:1px solid #000;overflow:hidden;width:240px;z-index:1000;}*/
View Code

jquery.plugin.js

(function($){
$.fn.bgIframe = $.fn.bgiframe = function(s) {
    // This is only for IE6
    if ( $.browser.msie && /6.0/.test(navigator.userAgent) ) {
        s = $.extend({
            top     : \'auto\', // auto == .currentStyle.borderTopWidth
            left    : \'auto\', // auto == .currentStyle.borderLeftWidth
            width   : \'auto\', // auto == offsetWidth
            height  : \'auto\', // auto == offsetHeight
            opacity : true,
            src     : \'javascript:false;\'
        }, s || {});
        var prop = function(n){return n&&n.constructor==Number?n+\'px\':n;},
            html = \'<iframe class="bgiframe"frameborder="0"tabindex="-1"src="\'+s.src+\'"\'+
                       \'style="display:block;position:absolute;z-index:-1;\'+
                           (s.opacity !== false?\'filter:Alpha(Opacity=\\\'0\\\');\':\'\')+
                           \'top:\'+(s.top==\'auto\'?\'expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+\\\'px\\\')\':prop(s.top))+\';\'+
                           \'left:\'+(s.left==\'auto\'?\'expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+\\\'px\\\')\':prop(s.left))+\';\'+
                           \'width:\'+(s.width==\'auto\'?\'expression(this.parentNode.offsetWidth+\\\'px\\\')\':prop(s.width))+\';\'+
                           \'height:\'+(s.height==\'auto\'?\'expression(this.parentNode.offsetHeight+\\\'px\\\')\':prop(s.height))+\';\'+
                    \'"/>\';
        return this.each(function() {
            if ( $(\'> iframe.bgiframe\', this).length == 0 )
                this.insertBefore( document.createElement(html), this.firstChild );
        });
    }
    return this;
};

})(jQuery);
View Code

构建的js

var selectItemhidden = jQuery("<div></div>").addClass("selectItemhidden").attr("id","selectItem");

var selectItemtit = jQuery("<div></div>").addClass("selectItemtit bgc_ccc").attr("id","selectItemAd");
var selectItemleft = jQuery("<h2></h2>").addClass("selectItemleft").attr("id","selectItemTitle");
var selectItemright = jQuery("<div></div>").addClass("selectItemright").attr("id","selectItemClose");



var selectItemcont = jQuery("<div></div>").addClass("selectItemcont").attr("id","selectItemCount");
var selectSub = jQuery("<div></div>").attr("id","selectSub");
var checkbox = jQuery("<input>").attr("type","checkbox").attr("name","cr01").attr("id","cr01").val("北京1");
var label = jQuery("<label>").attr("for","cr01").html("北京");


var title = selectItemtit.append(selectItemleft).append(selectItemright);
var content = selectItemcont.append(selectSub.append(checkbox).append(label));

selectItemhidden.append(title).append(content);
View Code

 

以上是关于jquery input选择弹框的主要内容,如果未能解决你的问题,请参考以下文章

js模拟弹框选择文件夹

为啥 jQuery 选择事件侦听器会触发多次?

几个非常实用的JQuery代码片段

移动端(H5)弹框组件--简单--实用--不依赖jQuery

jquery中的$的特殊用法

jquery——通过name属性查找元素