Js细节备忘

1. js中的prototype

参考文档:http://www.cnblogs.com/yjf512/archive/2011/06/03/2071914.html

  • prototype就是“一个给类的对象添加方法的方法”,使用prototype属性,可以给类动态地添加方法,以便在JavaScript中实现“继承”的效果

(1) js中常见的三种方法

function People(name){
  this.name=name; 
  //★对象方法
  this.Introduce=function(){
    alert("My name is "+this.name);
  }
}
//★★类方法
People.Run=function(){
  alert("I can run");
}
//★★原型方法
People.prototype.IntroduceChinese=function(){
  alert("我的名字是"+this.name);
}
//测试
var p1=new People("Windking");//创建对象
p1.Introduce();//对象方法调用
People.Run();//类方法调用
p1.IntroduceChinese();//原型方法调用

(2) js中对象的prototype属性

  • javascript中的每个对象都有prototype属性,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用

function baseClass(){
  this.showMsg = function(){
     alert("baseClass::showMsg");   
  }
}
function extendClass(){
}
extendClass.prototype = new baseClass();//理解为:extendClass是以baseClass的一个实例为原型克隆创建的
var instance = new extendClass();
instance.showMsg(); // 显示baseClass::showMsg


A.prototype = new B(); 

不应把它和继承混淆。A的prototype为B的一个实例,可以理解A将B中的方法和属性全部克隆了一遍。A能使用B的方法和属性。这里强调的[是克隆而不是继承]


下面我们首先定义了baseClass类,然后我们要定义extentClass,以baseClass的一个实例为原型,来克隆的extendClass也同时包含showMsg这个对象方法

function baseClass(){
  this.showMsg = function(){
     alert("baseClass::showMsg");   
  }
}
function extendClass(){
}
extendClass.prototype = new baseClass();//理解为:extendClass是以baseClass的一个实例为原型克隆创建的
var instance = new extendClass();
instance.showMsg(); // 显示baseClass::showMsg

  • 问题1:如果extendClass中本身包含有一个与baseClass的方法同名的方法会怎么样?

function baseClass(){
    this.showMsg = function(){
        alert("baseClass::showMsg");   
    }
}
function extendClass(){
    this.showMsg =function (){
        alert("extendClass::showMsg");
    }
}
extendClass.prototype = new baseClass();
var instance = new extendClass();
instance.showMsg();//显示extendClass::showMsg

结论函数运行时会先去本体的函数中去找,如果找到则运行,找不到则去prototype中寻找函数

  • 问题2:使用extendClass的一个实例instance调用baseClass的对象方法showMsg怎么办?
extendClass.prototype = new baseClass();
var instance = new extendClass();
var baseinstance = new baseClass();
//★★通过使用call函数,参数是实例instance,调用者是基类对象方法
baseinstance.showMsg.call(instance);//显示baseClass::showMsg
  • 综合练习:
function baseClass(){//基类
	this.showMsg = function(){//基类方法
		alert("baseClass::showMsg");   
	}
	this.baseShowMsg = function(){//基类方法
		alert("baseClass::baseShowMsg");
	}
}
baseClass.showMsg = function(){
	alert("baseClass::showMsg static");
}
function extendClass(){
	this.showMsg =function (){
		alert("extendClass::showMsg");
	}
}
extendClass.showMsg = function(){
	alert("extendClass::showMsg static")
}
extendClass.prototype = new baseClass();
var instance = new extendClass();
instance.showMsg(); //显示extendClass::showMsg
instance.baseShowMsg(); //显示baseClass::baseShowMsg
instance.showMsg(); //显示extendClass::showMsg,对应问题1
baseClass.showMsg.call(instance);//显示baseClass::showMsg static,对应问题1、2
var baseinstance = new baseClass();
baseinstance.showMsg.call(instance);//显示baseClass::showMsg

jquery的html,text,val

  1. .html()用为读取和修改元素的HTML标签
  2. .text()用来读取或修改元素的纯文本内容
  3. .val()用来读取或修改表单元素的value值

html属性中有两个方法,一个有参,一个无参 

  •  无参html():取得第一个匹配元素的html内容。这个函数不能用于XML文档。但可以用于XHTML文档,返回的是一个String

    例子: 

html页面代码:<div><p>Hello</p></div>

jquery代码:$("div").html();

结果:Hello

  •      有参html(val):设置每一个匹配元素的html内容。这个函数不能用于XML文档。但可以用于XHTML文档。返回一个jquery对象

例子:

html页面代码:<div></div> 

jquery代码:$("div").html("<p>Nice to meet you</p>");

结果:[ <div><p> Nice to meet you</p></div> ]      

 
 text属性中有两个方法,一个有参,一个无参

  • 无参text():取得所有匹配元素的内容。结果是由所有匹配元素包含的文本内容组合起来的文本。返回的是一个String

例子: 

html页面代码:<p><b>Hello</b> fine</p>
<p>Thank you!</p>
jquery代码:$("p").text();

结果:HellofineThankyou!

  •  有参text(val):设置所有匹配元素的文本内容,与 html() 类似, 但将编码 HTML (将 "<" 和 ">" 替换成相应的HTML实体).返回一个jquery对象

例子:

html页面代码:<p>Test Paragraph.</p> 

jquery代码:$("p").text("<b>Some</b> new text.");

结果:[ <p><b>Some</b> new text.</p> ]

 
val()属性中也有两个方法,一个有参,一个无参。

  • 无参val():获得第一个匹配元素的当前值。在 jQuery 1.2 中,可以返回任意元素的值了。包括select。如果多选,将返回一个数组,其包含所选的值。

例子:多选下拉框,$('#multiple').val()返回数组。$("#multiple").val().join(", "))以,连接数组中每个值
html页面代码:

<p></p><br/>
<select id="single">
 <option>Single</option>
 <option>Single2</option>
</select>
<select id="multiple" multiple="multiple">
 <option selected="selected">Multiple</option>
 <option>Multiple2</option>
 <option selected="selected">Multiple3</option>
</select> 
jquery代码:
("p").append( "<b>Single:</b> "   + $("#single").val() + " <b>Multiple:</b> " + $("#multiple").val().join(", "));

结果:[ <p><b>Single:</b>Single<b>Multiple:</b>Multiple, Multiple3</p>]   

  • 有参val(val):设置每一个匹配元素的值。在 jQuery 1.2, 这也可以为check,select,radio元件赋值,返回一个jquery对象 

例子

html页面代码:

<input type="text"/>

jquery代码:$("input").val("hello world!");

  结果:hello world!

  • 1. 问题:用$("#id")来获得页面的input元素的时候,发现$("#id").value不能取到值
总/错误分析:
$("")是一个jquery对象,而不是一个dom element 
value是dom element的属性,jquery与之对应的是val 
val():获得第一个匹配元素的当前值。 
val(val):设置每一个匹配元素的值。
示例:
取值:val = $("#id")[0].value; 
赋值:$("#id")[0].value = "new value"; 
或者1:$("#id").val("new value"); 
或者2:val = $("#id").attr("value"); 

  • 2. JS中的return false、return true
参考文档:return false http://blog.sina.com.cn/s/blog_648f22760100zrv3.html
Return False 就相当于终止符, 一般是用来取消默认动作的。比如你单击一个链接除了触发你的onclick事件(如果你指定的话)
以外还要触发一个默认事件用于执行页面的跳转。所以如果你想取消对象的默认动作就可以return false。return false 只在当前函数有效,不会影响其他外部函数的执行。
Return True 就相当于执行符
return  把控制权返回给页面。


  • 3. 常用正则表达式
var regex = /^[0-9]{11}$/g;// 仅支持数字格式且长度为11-->手机号码
var regexce= /[,。、;:‘”、|!.,()^()¥`~!@#$%^&*_+<>{}\/'[\]0-9(^\s*)|(\s*$)]/im;//中文英文
var regexName = /[,。、;:‘”、|!.,()^()¥`~!@#$%^&*_+<>{}\/'[\](^\s*)|(\s*$)]/im;//中文英文数字


  • 4. css() 方法返回或设置匹配的元素的一个或多个样式属性
当用于返回一个值时,不支持简写的 CSS 属性(比如 "background" 和 "border")。
示例:
$("#showReallyPre").css({
display:'block'
});
$("p").css("color","red");

blur() 函数触发 blur 事件,或者如果设置了 function 参数,该函数也可规定当发生 blur 事件时执行的代码

  • 6. CSS3 opacity 属性:

设置 div 元素的不透明级别:http://www.w3school.com.cn/cssref/pr_opacity.asp

IE8 以及更早的版本支持替代的 filter 属性。例如:filter:Alpha(opacity=50)。
语法:opacity:value|inherit;
value 规定不透明度。从 0.0 (完全透明)到 1.0(完全不透明)。 

inherit 应该从父元素继承 opacity 属性的值。 

7. 在html中鼠标经过时样式改变http://dwcmayday201204063551.iteye.com/blog/1568122
变换鼠标形状: 
οnmοusemοve="this.style.cursor='hand';" 
οnmοuseοut="this.style.cursor='auto';" 
变换背景图片: 
οnmοusemοve="this.style.backgroundImage='url(Images/HomeTBGCChange.jpg)'" 
οnmοuseοut="this.style.backgroundImage='url(Images/HomeTBGC.jpg)'" 
鼠标略过时的颜色 
onMouseOver="this.style.color='#8E6235
鼠标离开时的颜色 
onMouseOut="this.style.color='#808284'"
变换文字颜色: 
<a href="www.baidu.com" target="..."  onMouseOver="this.style.color='#8E6235';this.style.textDecoration='underline'" onMouseOut="this.style.color='#808284';this.style.textDecoration='none'">文本</a>


示例:

<!-- 说明:其它相关示例:http://www.w3school.com.cn/tiy/t.asp?f=css3_opacity_js
		onMouseOver="JavaScript:this.style.backgroundColor='#FF0000';" 这一句是鼠标通过时行背景要显示的#FF0000颜色
		onMouseOut="JavaScript:this.style.backgroundColor='';" 这一句是鼠标离开时行背景要显示的颜色,这里颜色代码留空,表示恢复行原来的背景颜色。
	 -->
	<html>
		<head>
			<title>使用脚本(JavaScript)实现鼠标通过(onMouseOver)/离开(onMouseOut)文本、图片、表格时的特殊效果__浪人文章</title>
			<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
		</head>
		<body>
			1.文本测试:<br>
			<font face="宋体" size="3" color="#008000" onMouseOver="JavaScript:this.style.color='#FF0000';" onMouseOut="JavaScript:this.style.color='';">文本测试:鼠标通过时,文本改变颜色,离开后恢复原来的颜色</font><br>
			<font face="宋体" size="3" color="#008000" onMouseOver="JavaScript:this.style.color='#FF0000';this.style.textDecoration='underline';" onMouseOut="JavaScript:this.style.color='#0000FF';this.style.textDecoration='none';">文本测试:鼠标通过时,文本改变颜色并显示下划线,第一次离开后又改变成另外一种颜色</font><br>
			<font face="宋体" size="3" color="#008000" onMouseOver="JavaScript:this.style.backgroundColor='#FF0000';" onMouseOut="JavaScript:this.style.backgroundColor='';">文本测试:鼠标通过时,文本背景改变颜色,离开后恢复原来的颜色</font><br>
			<font face="宋体" size="3" color="#008000" onMouseOver="JavaScript:this.style.backgroundColor='#FF0000';this.style.textDecoration='underline';" onMouseOut="JavaScript:this.style.backgroundColor='#0000FF';this.style.textDecoration='none';">文本测试:鼠标通过时,文本背景改变颜色并显示下划线,第一次离开后又改变成另外一种颜色</font><br>
			<hr/>
			2.图片测试 <br>
					图片载入时比较模糊,当鼠标通过时变得清晰,离开后又恢复原来的样子(opacity 后面的数字是调节清晰度的,要多少清晰度自己修改):这里应用了 filter属性,只有IE8及以下浏览器支持<br>
			<img src="./image/buzhou.png" border="0" style="filter:alpha(opacity=10);" onMouseOver="JavaScript:this.filters.alpha.opacity='20';" onMouseOut="JavaScript:this.filters.alpha.opacity='60';"> <br>
			<hr/>
			3.表格测试<br>
			<table border="1" width="500" height="10">
				<tr bgcolor="#FFFFFF" onMouseOver="JavaScript:this.style.backgroundColor='#FF0000';" onMouseOut="JavaScript:this.style.backgroundColor='';">
					<td height="30" width="490">当鼠标通过这一行时,背景颜色改变,离开时又恢复原来的颜色</td>
				</tr>
				<tr>
					<td height="30" width="490"></td>
				</tr>
			</table>
			<br>
		</body>
	</html>

附录示例代码:

/** 理解:this.replace()
 * 	replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
 *  *   前面的字符任意多个
	?   前面的字符0个或1个
	+   前面的字符1个或以上
	s*     s任意多个
	^s*    以s开头的s任意多个
	s*$    以s结尾的s任意多个
	/(^s*)|(s*$)/g    全局模式下,匹配任意多个s开头、或任意多个s结尾的字符
	return this.replace(/(^s*)|(s*$)/g, "");  删除字符串头尾的任意多个s,并返回处理后的字符串
 */

/**给String添加一个自定义的方法:用于去除输入框内容的左右空格*/
String.prototype.trim = function() {
	return this.replace(/(^\s*)|(\s*$)/g, "");
};
String.prototype.ltrim = function() {
	return this.replace(/(^\s*)/g, "");
};
String.prototype.rtrim = function() {
	return this.replace(/(\s*$)/g, "");
};

/**检查电话格式是否合格*/
function phoneCheck(id){
	var pp = document.getElementById(id).value;
	var mobilePhone=/^((\(\d{2,3}\))|(\d{3}\-))?1\d\d{9}$/;
	var phone=/^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/;
	if(!mobilePhone.test(pp) && !phone.test(pp)){
		alert("电话号码输入有误!\n如果您的号码带有区号,请在区号后加横杠");
		return false;
	}
	return true;
}

/**获得详细服务:点击按钮,提交action请求*/
//对应jsp代码:<img src="${s.imageUrl }" width="100%" οnclick="goDetailService('${pageContext.request.contextPath }/homeAction.do?method=getService','${s.id}');"/>
function goDetailService(url, id) {
	document.getElementById("id2").value=id;//赋值
	document.getElementById("form_service").action=url;//赋值
	document.getElementById("form_service").submit();//★HTML DOM submit()方法把表单数据提交到 Web 服务器
}

//对一个jsp代码:<input value="上  一  步" type="button" οnclick="javascript:closeDiv('popPwDiv');showDiv('popUserDiv');" οnmοuseοver="style.opacity='0.6'" οnmοuseοut="style.opacity='1'"/>
/**★★关闭指定div层*/
function closeDiv(div) {
	//★★.style.display属性:设置或检索对象是否及如何显示
	//★none是隐藏对象,与visibility属性的hidden值不同,其不为被隐藏的对象保留其物理空间 
	document.getElementById(div).style.display = 'none';
	//对应html代码:<div id="bg" class="bg" style="display:none;"></div>
	document.getElementById('bg').style.display = 'none';
	document.getElementById('popIframe').style.display = 'none';
}

/**★★弹出指定div层*/
function showDiv(divId) {
	if(divId=="popUserDiv"){//添加500w时校验是否填写规模
		if(document.getElementById("show").innerHTML.indexOf("请填写以下规模")!=-1){
			alert("请填写规模");
			return -1;
		}
	}
	var showFlag=true;
	  $("#"+divId).css({
		  top:(($(window).height()-$("#"+divId).outerHeight())/2)
	  });
	if(showFlag==true){
		document.getElementById(divId).style.display = 'block';
		document.getElementById('bg').style.display = 'block';
	}
}

/**★异步校验用户填写信息*/
function checkUserMSG() {
	var regex = /^[0-9]{11}$/g;// 仅支持数字格式且长度为11-->手机号码
	var regexce= /[,。、;:‘”、|!.,()^()¥`~!@#$%^&*_+<>{}\/'[\]0-9(^\s*)|(\s*$)]/im;//中文英文
	var regexName = /[,。、;:‘”、|!.,()^()¥`~!@#$%^&*_+<>{}\/'[\](^\s*)|(\s*$)]/im;//中文英文数字
	if(document.getElementById('contactName').value==""){
		alert("请认证填写您的姓名");
		return false;
	}
	if(regexce.test(document.getElementById('contactName').value)){
		alert("请检查您的姓氏是否有非法字符,仅支持中英文");
		return false;
	}
	if(phoneCheck('contactTelephone')==false){
		return false;
	}
	if(document.getElementById('enterpriseName').value==""){
		alert("请填写您的企业名称");
		return false;
	}
	if(regexName.test(document.getElementById('enterpriseName').value)){
		alert("检查企业名称是否有非法字符");
		return false;
	}
	return true;
}

/**
 * 500W以上时的原价、折扣价 【需要计算公式 测试→原 价:营 业 额*0.5*1000+资产总额*0.5*1000】100万-500万	A*0.001+2000	
 * 添加服务id方便显示定金
 */
function getMoney(id) {
	var regex1 = /^[0-9]*$|[0-9]{1,5}\.[0-9]{1,2}$/;
	var regex2 = /^[0-9]*$|[0-9]{1,5}\.[0-9]{1,2}$/;
	if(document.getElementById('yye').value!=""&&document.getElementById('zcze').value!=""){
		if(id == 3 && (document.getElementById('yye').value >= 500 || document.getElementById('yye').value <= 300)){
			alert("请注意:营业额至少300万起,500万上限。");
			document.getElementById('yye').value="";
			document.getElementById('zcze').value=""; / 【添加】
			document.getElementById('original').innerHTML="¥";
			document.getElementById('show').innerHTML="¥请填写以下规模";
			document.getElementById('zhoushi').style.display='none';
			document.getElementById('guanggao').style.display='block';
			return -1;
		}
		if(id == 2 && (document.getElementById('yye').value <= 100 || document.getElementById('yye').value >= 300)){
			alert("请注意:营业额至少100万起,300万上限。");
			document.getElementById('yye').value="";
			document.getElementById('zcze').value=""; / 【添加】
			document.getElementById('original').innerHTML="¥";
			document.getElementById('show').innerHTML="¥请填写以下规模";
			document.getElementById('zhoushi').style.display='none';
			document.getElementById('guanggao').style.display='block';
			return -1;
		}
		///填写格式不正确时处理
		if(!regex1.test(document.getElementById('yye').value) || !regex2.test(document.getElementById('zcze').value)){
			alert("规模填写格式不正确\n不允许非法字符且最多精确到两位小数");
			document.getElementById('yye').value=""
			document.getElementById('zcze').value=""
			document.getElementById('original').innerHTML="¥";
			document.getElementById('show').innerHTML="¥请填写以下规模";
			document.getElementById('zhoushi').style.display='none'; //此元素不会被显示
			document.getElementById('guanggao').style.display='block'; //此元素将显示为块级元素,此元素前后会带有换行符。//扩展:display="null"是隐藏 而display="" 是重新显示
			return -1;
		}									/	【添加】
		document.getElementById('original').innerHTML="¥"+(Math.floor(document.getElementById('yye').value*10000*0.001+2000));
		document.getElementById('show').innerHTML="¥"+Math.floor((document.getElementById('yye').value*10000*0.001+2000)*0.7*document.getElementById('zkl').innerHTML*0.1);
		$('#imgrefresh').click();
		if(id==2){
			//document.getElementById('original').innerHTML="¥2100~¥3500";
			document.getElementById('showReally').innerHTML="¥500";
		}else if(id==3){
			//document.getElementById('original').innerHTML="¥3500~¥4900";
			document.getElementById('showReally').innerHTML="¥800";
		}
		$("#showReallyPre").css({
			display:'block'
		});
		$("#showReally").css({
			display:'block'
		});
	}if(document.getElementById('yye').value==""||document.getElementById('zcze').value==""){
		document.getElementById('original').innerHTML="¥";
		document.getElementById('show').innerHTML="¥请填写以下规模";
		document.getElementById('zhoushi').style.display='none';
		document.getElementById('guanggao').style.display='block';
	}
}

/**设置企业名称、证书信息*/
function getCerSn(id) {
	try{
		fsCA.AtvInit();
	}catch(e){
		alert("请确认是否已经安装证联客户端");
		return -1;
	}
	var sigCert =  fsCA.GetCert(2);
	var certInfo = fsCA.GetCertInfo(sigCert);
    var indx1 = certInfo.indexOf("<serialnum>");
    var indx2 = certInfo.indexOf("</serialnum>");
    var certSn=certInfo.substring(indx1 + 11, indx2)
    if(certSn==""){
    	alert("请检查数字证书是否插入");
    	return -1;
    }
    var subject=certInfo.substring(certInfo.indexOf("<subject>")+9,certInfo.indexOf("</subject>"));
	var indx1 = subject.indexOf("<dn_o>");
	var indx2 = subject.indexOf("</dn_o>");
	var Certsn = subject.substring(indx1 +6, indx2);
    document.getElementById(id).value=Certsn;
    document.getElementById("certInfo").value=certInfo;
}

/** 获得服务签名协议书*/
function signContractData() {
	try{
		fsCA.AtvInit();
	}catch(e){
		alert("请确认是否已经安装证联客户端");
		return -1;
	}
	var sigCert =  fsCA.GetCert(2);
	var certInfo = fsCA.GetCertInfo(sigCert);
    var indx1 = certInfo.indexOf("<serialnum>");
    var indx2 = certInfo.indexOf("</serialnum>");
    var certSn=certInfo.substring(indx1 + 11, indx2)
    if(certSn==""){
    	alert("请检查数字证书是否插入");
    	return -1;
    }
    var r=document.getElementById("contract").innerHTML;
    var signData = fsCA.SignData(r,32772,0);
    fsCA.Logout();
    //加上"+"号变空格的解决办法     20150325
    document.getElementById("signData").value=signData.replace(/\+/g, '%2B');
    return ;
}

/**我的订单的展示 请插入key*/
function showMyOrders(url) {
	try{
		fsCA.AtvInit();
	}catch(e){
		alert("请确认是否已经安装证联客户端");
		return -1;
	}
	var sigCert =  fsCA.GetCert(2);
	var certInfo = fsCA.GetCertInfo(sigCert);
    var indx1 = certInfo.indexOf("<serialnum>");
    var indx2 = certInfo.indexOf("</serialnum>");
    var certSn=certInfo.substring(indx1 + 11, indx2)
    if(certSn==""){
    	alert("请检查数字证书是否插入");
    	return -1;
    }else{
    	 window.location.href=url+"&certSn="+certSn;
    }
}

$(document).ready(function() {///document 属性、时间准备中
	/*$('img').css({
		cursor : 'pointer'
	});*/
	//提交用户信息
	$('#toSign').click(
			function(){
				if(checkUserMSG()){
					closeDiv('popUserDiv');
					document.getElementById("enterprise1").innerHTML=document.getElementById("enterpriseName").value;
					/*document.getElementById("enterprise2").innerHTML=document.getElementById("enterpriseName").value;*/
					document.getElementById("hetongPrice").innerHTML=document.getElementById("show").innerHTML.replace("¥","");
					document.getElementById("hetongtitle").innerHTML=document.getElementById("name").value;
					showDiv('popPwDiv');
				}
			}
	);
	//同意签署
	$('#toSubmit').click(
			function(){
				signContractData();
				var costPrice;
				costPrice=document.getElementById('show').innerHTML.replace("¥","");
				var contactNameTmp=document.getElementById("contactName").value+$("input[name='P']:checked").val();
				 DOC88Window.win({message:$('#loadDiv').html()});
				 $.ajax({
						type : "POST",
						dataType : "text",
						async:false,  //异步:
						url : "homeAction.do?method=goOrder",		/			【添加营业额和资产总额】
						data:"id="+document.getElementById("id").value+"&contactName="+contactNameTmp+"&contactTelephone="+document.getElementById("contactTelephone").value+"&enterpriseName="+document.getElementById("enterpriseName").value+"&certInfo="+document.getElementById("certInfo").value+"&signData="+document.getElementById("signData").value+"&costPrice="+costPrice+"&turnover="+document.getElementById("yye").value+"&asserts="+document.getElementById("zcze").value,
						success : function(data) {
							if(data.split("&")[0]=="success"){
								closeDiv('popPwDiv');
								document.getElementById("Moneny").innerHTML=document.getElementById("showReally").innerHTML.replace("¥","");
								document.getElementById("orderId").innerHTML=data.split("&")[1];
								showDiv('popPayDiv');
							}else if(data=="false"){
								closeDiv('popPwDiv');
								alert("签署合同失败,请检查填写信息并确保您当前已插入key");
							}else{
								closeDiv('popPwDiv');
								alert(data);	
							}
						},
						error : function(result) {
							closeDiv('popPwDiv');
							alert("提交失败,操作失败");
						}
				});
				DOC88Window.close();
			}
	);
});

/**付款 弹出层新建窗口打开连接*/
function payMoney(orderId,subject,moneny) {
	var url="alipayAction.do?method=handleRequest";
	if(document.getElementById("popPayDiv")!=null){
		closeDiv('popPayDiv');
	}
	showDiv('popAfterPayDiv');
	window.open(url+"&WIDout_trade_no="+orderId+"&WIDsubject="+subject+"&WIDtotal_fee="+moneny);
}

/**立即购买*/
function reallyBuy() {
	if(document.getElementById("zcze").value==""||document.getElementById("yye").value==""){
		document.getElementById('serviceInfoTab').style.display='block';
		document.getElementById('moreInfoTab').style.display='none';
		document.getElementById('leftbar').style.display='none';
	}
	if(document.getElementById("buyNowMsg").innerHTML=="已购买"){
		return -1;
	}
	if(getCerSn('enterpriseName')!=-1){
		if(document.getElementById('gameOver').innerText=="活动已结束")
		{
			alert('很抱歉,当前活动已结束,不允许购买');
			return -1;
		}
		else{
			/ 20150327  添加判断是否已经购买
			gotoCheckBuyOrNot();
			if(document.getElementById("buyNowMsg").innerHTML=="已购买"){
				return -1;
			}
			showDiv('popUserDiv');
			/
		}
	}
}

/**添加判断是否已经购买*/
function gotoCheckBuyOrNot() {
	DOC88Window.win({message:$('#loadDiv').html()});
	 $.ajax({
			type : "POST",
			dataType : "text",
			async:false,  //异步:
			url : "homeAction.do?method=checkBuyOrNot",
			data:"id="+document.getElementById("id").value+"&certInfo="+document.getElementById("certInfo").value,
			success : function(data) {
				if(data=="success"){
					closeDiv('popPwDiv');
					//alert("可以购买该服务");
				}else{
					closeDiv('popPwDiv');
					alert("该服务您已购买过,请前往订单中心确认是否已经付款");
					document.getElementById("buyNowMsg").innerHTML="已购买";
					$('#buyNowMsgButton').css({
						backgroundColor:'gray'
					});
				}
			},
			error : function(result) {
				closeDiv('popPwDiv');
				alert("提交失败,操作失败");
			}
	});
	DOC88Window.close();
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值