InstallShield JavaScript密码验证及替代alert消息输出求助
解决InstallShield JavaScript中的消息输出与密码验证问题
我来帮你搞定这两个InstallShield JS开发里的问题——替代alert的消息提示,还有正则验证的错误修复:
一、替代alert的消息输出方法
InstallShield的JavaScript运行环境不是浏览器,所以浏览器原生的alert()函数没法正常工作。你可以用InstallShield专门提供的**MessageBox函数**来弹出消息框,这是适配安装流程的标准用法。
具体用法:MessageBox函数
语法非常直观,你可以指定消息内容、图标样式和按钮类型:
MessageBox(messageContent, buttonType, iconType);
常用的预定义常量直接用就行:
MB_OK:只显示「确定」按钮(对应值0)MB_ICONEXCLAMATION:显示警告图标(对应值48)MB_ICONINFORMATION:显示信息图标(对应值64)
把你的alert替换成下面这样就可以正常弹出提示了:
MessageBox("密码需包含6-20位字母和数字,请重新输入!", MB_OK, MB_ICONEXCLAMATION);
二、修复密码正则验证的错误
你的正则表达式有两处明显问题:
- 开头的
:\[完全多余且错误,应该用^来匹配字符串的起始位置 - 结尾的
\\是无效转义,完全不需要保留
正确的正则写法
要验证「6-20位字母+数字」的密码,正确的正则规则是^[A-Za-z0-9]{6,20}$,对应的JS写法有两种:
写法1:正则字面量(更简洁)
var patt = /^[A-Za-z0-9]{6,20}$/ig;
写法2:RegExp构造函数(注意字符串转义)
var patt = new RegExp("^[A-Za-z0-9]{6,20}$", "ig");
修改后的完整代码
把上面的修正点整合后,你的函数应该是这样的:
function Passwordvalidation() { var password = Session.Property("PASSWORD"); // 使用正确的正则表达式 var patt = /^[A-Za-z0-9]{6,20}$/ig; var validpassword = patt.test(password); if(validpassword) { GetMD5(); // 调用另一个函数 return true; } // 用InstallShield的MessageBox替代alert MessageBox("密码需包含6-20位字母和数字,请重新输入!", MB_OK, MB_ICONEXCLAMATION); return false; }
内容的提问来源于stack exchange,提问作者jacksparrow
相关产品推荐
相关产品推荐

