You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS Web应用中jQuery模拟iPhone密码输入致文本框禁用问题求助

解决ASP.NET母版页中jQuery.dPassword插件的禁用与显示问题

我来帮你分析并解决这两个核心问题:文本框无法编辑,以及TextMode="Password"时无值显示的问题。

一、文本框无法编辑的原因与修复

核心问题是你误解了插件prefix参数的作用,导致事件绑定到了不存在的元素上:

  1. 修正prefix参数
    插件的prefix是用来给新生成的文本框ID添加前缀,和原密码控件做区分。但你的原控件ID已经被母版页自动加上了MainContent_前缀,所以不需要再额外添加这个前缀。修改你的调用代码,传入空的prefix:
$(function () {
    $("[id$=txtMID01]").dPassword({
        prefix: '' // 移除多余的前缀设置
    });
});
  1. 调整插件的getId函数
    原插件的getId函数是用来从新控件ID中剥离前缀,提取原控件ID。现在prefix为空,我们可以简化这个函数,避免正则匹配出错:
getId = function (id) {
    // 直接返回ID即可,无需处理前缀
    return id;
}
  1. 确认控件未被后台禁用
    检查你的ASP.NET控件后台代码,确保没有设置Enabled="false",否则原控件会被渲染为禁用状态,间接影响插件的交互逻辑:
' 确保后台控件是启用状态
txtMID01.Enabled = True

二、TextMode="Password"时无值显示的修复

当设置TextMode="Password"时,浏览器会隐藏密码控件的value属性,插件原代码通过attr('value')无法获取到后台填充的值。我们需要修改插件读取值的方式:

找到插件中获取原控件值的代码:

var value = $(this).attr('value');

替换为用val()方法读取实际值:

var value = $(this).val();

这样插件就能正确读取密码控件的后台填充值,初始化时会把新文本框的内容设置为对应的值并转换为圆点显示。

三、完整的插件修改后关键代码片段

修改后的getId和值读取部分:

(function ($) {
    $.fn.dPassword = function (options) {
        var defaults = {
            interval: 200,
            duration: 3000,
            replacement: '%u25CF',
            prefix: '', // 默认前缀设为空
            debug: false
        }
        var opts = $.extend(defaults, options);
        var checker = new Array();
        var timer = new Array();
        $(this).each(function () {
            if (opts.debug) console.log('init [' + $(this).attr('id') + ']');
            // 省略其他属性读取代码...
            // 正确读取控件值
            var value = $(this).val();
            // 省略其他创建新控件的代码...
        });
        // 简化getId函数
        getId = function (id) {
            return id;
        }
        // 省略其他函数代码...
    };
})(jQuery);

四、测试验证

  1. 保留TextMode="SingleLine"时:修改后文本框应该可以正常输入,输入的字符短暂显示后变为圆点,后台能获取到输入的值。
  2. 设置TextMode="Password"时:后台填充的值会正确显示为圆点,文本框可正常编辑,后台也能获取到输入的真实值。

内容的提问来源于stack exchange,提问作者Jonathan Small

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 12:44:07