Kyl*_*ard 2 html javascript css asp.net
在过去的几年中,Google工具栏的自动填充功能一直是我的Web开发存在的祸根.我一直决定尝试创建一个计时器控件来检查更改,因为开发人员很难在控件上触发更改事件.当控件埋在嵌套中继器中时,这变得越来越复杂,然后尝试将其绑定到UpdatePanel是一个进一步的复杂问题.
有没有人能够成功阻止Google工具栏填写表单字段而无需将字段重命名为无关紧要的内容?(注意:这不适用于'State'下拉列表,甚至可以检查字段值).
为了像谷歌员工一样聪明,这是一次盛大的愚蠢疏忽.
更新:对于那些可能来这里寻找解决方案的人.到目前为止我发现的工作是你有ASP.net,是使用服务器控件"Timer"并将此控件设置为UpdatePanel的触发器.它有助于循环并检查更改的值.
如果您只能访问javascript,或者正在使用其他框架,那么我发现使用以下函数可以发挥最佳效果(我正在尝试监视状态和zip更改.focusElement是必需的,因为当将鼠标悬停在下拉列表中时,它会更改的selectedIndex):
function MonitorChanges(sStateDropdownID, sZipCodeID, sHiddenStateFieldId, sHiddenZipFieldId, bDoPostback) {
var state = $('#' + sStateDropdownID).val();
var zip = $('#' + sZipCodeID).val();
var hiddenstate = $('#' + sHiddenStateFieldId).val();
var hiddenzip = $('#' + sHiddenZipFieldId).val();
$('#' + sHiddenStateFieldId).val(state);
$('#' + sHiddenZipFieldId).val(zip);
var compareString = state + zip;
var compareHiddenString = hiddenstate + hiddenzip;
var focusElement = getElementWithFocus();
if (compareString != compareHiddenString && isShippingZip(zip)) {
bDoPostback = true
}
if (parseInt(focusElement.id.search('drpState')) == -1 && parseInt(focusElement.id.search('txtZip')) == -1 && bDoPostback) { bDoPostback = false; __doPostBack(sStateDropdownID, ''); }
var f = function() { MonitorChanges(sStateDropdownID, sZipCodeID, sHiddenStateFieldId, sHiddenZipFieldId, bDoPostback); }
setTimeout(f, 1000);
}
Run Code Online (Sandbox Code Playgroud)
根据Google开发人员最近的一篇文章,使用该autocomplete="off"属性将禁用IE和Firefox中的Google工具栏自动完成功能.请注意,此属性必须应用于<form>标记,而不是单个<input>标记:
<form method="post" action="http://example.com" autocomplete="off">
<!-- ... -->
</form>
Run Code Online (Sandbox Code Playgroud)
虽然这不是即时修复,但它可能是最可靠的解决方案 - 如果可以等到Google工具栏的下一次迭代.