JS不执行

hrangelet 2016-06-12 11:13:44
我点击获取验证码的时候,为什么JS并不执行,没有任何反应。以下是相关页面!
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="Scripts/jquery-sjyz.js"></script>
<title>手机绑定</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<div class="Con">
<ul>
<li class="left">输入手机号码:</li>
<li class="right">
<input id="txtMobile" runat="server" type="text" class="Text" /><input
id="btnGetYzm" runat="server" type="button" class="hyzm" value="获取验证码" />

</li>
</ul>
<ul>
<li class="left">验证码:</li>
<li class="right">
<input id="txtChkCode" runat="server" type="text" class="Text" /></li>
<li id="liCheckCode" runat="server" class="ts">* 请输入手机收到的验证码。如果一段时间没有收到,请 <a
id="aGetChkCodeAgain" style="cursor: pointer;" class="a1">重新获取</a></li>
</ul>
</div>
</form>
</body>
</html>



JS文件:

$(function () {
$("#btnGetYzm,#aGetChkCodeAgain").bind("click", function () {
if (mobileResult == true) {
/****************************发送验证码到手机************************/
$.ajax({
type: "POST",
url: "../SendCheckcode.ashx?r=" + Math.random(),
data: { ajaxdata: $("#txtMobile").val() },
async: false,
success: function (msg) {
if (msg != 0) {
$("#liCheckCode").html(msg);
$("#liCheckCode").css("color", "red");
result = false;
}
else {
$("#liCheckCode").html("手机号验证通过");
$("#liCheckCode").css("color", "green");
result = true;
}
},
error: function (xhr) {
$("#liCheckCode").html("Error:" + xhr.status + " " + xhr.statusText);
$("#liCheckCode").css("color", "red");

result = false;
}
});
/****************************end************************/
count = 30;
GetYzm();
return true;
}
else {
//手机号验证
VerifyCheck($("#txtMobile"), $("#liCheckCode"), "请输入正确的手机号!", /^((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)/, "手机号不合法!", "../ExistsMobile.ashx");
return false;
}
});

var result = false;
var mobileResult = false;
var retMobile = false; //手机号验证是否通过
var retChkCode = false; //填写的手机接收的验证码是否通过
//表单元素验证,txt:要验证的文本值;div:文本验证信息层;divmsg:文本验证消息;
//reg:正则式;regmsg:正则式验证消息;ajaxurl:文本值有效性请求验证页面;divhtml:验证返回消息
function VerifyCheck(txt, div, divmsg, reg, regmsg, ajaxurl) {
if ($.trim(txt.val()) == "") {//判断文本框是否填写
div.html(divmsg);
div.css("color", "red");
return false;
}
else {
if (reg != null && !reg.test(txt.val())) {//判断是否输入合法字符
div.html(regmsg);
div.css("color", "red");
return false;
}
else {
/****************************检查文本输入值是否可用************************/
$.ajax({
type: "POST",
url: ajaxurl + "?r=" + Math.random(),
data: { ajaxdata: txt.val() },
async: false,
success: function (msg) {
if (msg != 0) {
div.html(msg);
div.css("color", "red");
result = false;
}
else {
div.css("color", "green");
if (divmsg == "请输入正确的手机号!") {
mobileResult = true;
}
if (ajaxurl == "../ExistsMobile.ashx") {
div.html("手机号输入正确");
retMobile = true;
}
if (ajaxurl == "../ExistsMobileYzm.ashx") {
div.html("验证码输入正确");
retChkCode = true;
}

result = true;
}
},
error: function (xhr) {
div.html("Error:" + xhr.status + " " + xhr.statusText);
div.css("color", "red");
result = false;
}
});
return result;
/****************************end************************/
}
}
}

//设置发送验证码的按钮的倒计时效果
var count = 30;
function GetYzm() {
$("#btnGetYzm").attr("disabled", "disabled");
$("#btnGetYzm").val(count + "秒之后重新获取")
count--;
if (count > 0) {
setTimeout(GetYzm, 1000);
}
else {
$("#btnGetYzm").val("获取验证码");
$("#btnGetYzm").attr("disabled", false);
}
return result;
}
})(jQuery);
//页面加载时设置点击"发送验证码"按钮请求Ajax页面,Ajax页面生成验证码发送到手机端,发送之后设置按钮文字时间倒计时效果,如果手机号验证未通过将继续验证,验证通过后才能发送
...全文
160 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 版主 2016-06-12
  • 打赏
  • 举报
回复
原因很简单,你用的服务器控件。 你应该写成 $("#<%=this.btnGetYzm.ClientID%>").bind("click", function ().................. 服务器控件,要通过ClientID找ID。不信你可以前台浏览html,看看生成后的button的id,就知道了
qq_31539415 2016-06-12
  • 打赏
  • 举报
回复
加一个 <script type="text/javascript" src="../js/jquery-1.8.3.min.js"></script> 放上面
hrangelet 2016-06-12
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.SessionState;
using YoyeeInteface;

namespace Senparc.Weixin.MP.Sample.WebForms
{
    /// <summary>
    /// SendCheckcode 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class SendCheckcode : IHttpHandler, IRequiresSessionState
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            string arrMobile = context.Request.Form["ajaxdata"].ToString();
            string[] strMobile = arrMobile.Split(',');
            string yzm = new Random().Next(999999).ToString();

            context.Session["MobileYzm"] = yzm;

            //如果是手机号登录
            string strReg = @"^((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)";
            //bool IsMobile = BLL.HSSM_Public.PublicRegex(strReg, arrMobile);
            bool b = false;

            yzm = "您的验证码是:" + yzm + ",3分钟内有效。如非您本人操作,可忽略本消息。";
            YoyeeSms sms = new YoyeeSms("hyyj", "248253");

            //if (IsMobile)
            string request = sms.sendSms(arrMobile, yzm);
            if (request.Contains("提交成功"))
            {
                b = true;
            }
            //else
            //{
            //    Model.EmailTabModel etm = new Model.EmailTabModel();
            //    etm.Email = arrMobile;
            //    b = BLL.HSSM_Public.SendEmail(etm, "", 919068484, "邮箱注册验证码", "当前注册验证码为:[" + yzm + "]", 0);//发送邮件
            //}

            if (b)
                context.Response.Write("0");
            else
                context.Response.Write("发送失败!");
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}
发送短信请求的页
hrangelet 2016-06-12
  • 打赏
  • 举报
回复


文件是这样的。
hrangelet 2016-06-12
  • 打赏
  • 举报
回复
不知道什么原因,把另外3个JS也加入到页面头部就可以了。结贴!
正怒月神 版主 2016-06-12
  • 打赏
  • 举报
回复
url: "../SendCheckcode.ashx?r=" + Math.random(), 改成 url: "SendCheckcode.ashx?r=" + Math.random(), 试试
Kevin_Zhuang 2016-06-12
  • 打赏
  • 举报
回复
应该是你没用模板页造成的吧,你别用你自己写的html ,直接调用模板页试试
hrangelet 2016-06-12
  • 打赏
  • 举报
回复
引用 4 楼 hanjun0612 的回复:
原因很简单,你用的服务器控件。 你应该写成 $("#<%=this.btnGetYzm.ClientID%>").bind("click", function ().................. 服务器控件,要通过ClientID找ID。不信你可以前台浏览html,看看生成后的button的id,就知道了
ID 没错,我生成后的ID没变化,因为我没用模板页!

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧