使用 Javascript onkeyup() 更改 IE8 中的不透明度(再次)
Changing opacity in IE8 using Javascript onkeyup() (again)
我提前为发布另一个IE不透明度问题道歉,但是我已经阅读了至少30个不同的页面(许多在SO上),并且无法使其工作。
我正在尝试根据用户在卡号<input>
字段中键入的第一个字符动态更改美国 4 种主要信用卡类型(Visa、MC、Amex、Discover)的不透明度。
我的代码在IE9,Firefox,Safari和Chrome中运行良好,但当然不是IE8,这是Windows XP支持所必需的。
我尝试使用以下方法进行设置:
object.style.filter = 'alpha(opacity=13)';
object.filter = 'alpha(opacity=13)';
object.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(Opacity=13)';
我什至尝试在不透明度中大写 O,没想到它会有所帮助......
有谁知道我错过了什么?
JQuery 解决方案很好,但我想知道出于学术原因在 Javascript 中是否可行......
我有以下 HTML:
<span>
<input name='cardnumber' value="3717XXXXXXX8775" type='text' id='cardnumber' onkeyup='setCardType();'>
</span>
<span>
<img src='/style/icon_visa.gif' id='visa' alt='This is a Visa' style='opacity:.13;filter:alpha(opacity=13);'>
<img src='/style/icon_mastercard.gif' id='mastercard' alt='This is a MasterCard' style='opacity:.13;filter:alpha(opacity=13);'>
<img src='/style/icon_amex.gif' id='amex' alt='This is an American Express' style='opacity:1;filter:alpha(opacity=100);'>
<img src='/style/icon_discover.gif' id='discover' alt='This is a Discover Card' style='opacity:.13;filter:alpha(opacity=13);'>
</span>
<input type='hidden' name='cardtype' id='cardtype' value="American Express">
和以下Javascript:
function setCardType() {
var cardnumber = document.getElementById('cardnumber').value;
cardnumber = cardnumber.replace(/[^0-9]/g,'');
document.getElementById('cardnumber').value = cardnumber;
var firstchar = document.getElementById('cardnumber').value.charAt(0);
if (firstchar == 3) {
if (document.getElementById('visa').style.opacity) {
document.getElementById('visa').style.opacity = .13;
document.getElementById('mastercard').style.opacity = .13;
document.getElementById('amex').style.opacity = 1;
document.getElementById('discover').style.opacity = .13;
}
else {
document.getElementById('visa').style.filter = 'alpha(opacity=13)';
document.getElementById('mastercard').style.filter = 'alpha(opacity=13)';
document.getElementById('amex').style.filter = 'alpha(opacity=100)';
document.getElementById('discover').style.filter = 'alpha(opacity=13)';
}
document.getElementById('confirmCardType').innerHTML = 'American Express';
}
else if (firstchar == 4) {
if (document.getElementById('visa').style.opacity) {
document.getElementById('visa').style.opacity = 1;
document.getElementById('mastercard').style.opacity = .13;
document.getElementById('amex').style.opacity = .13;
document.getElementById('discover').style.opacity = .13;
}
else {
document.getElementById('visa').style.filter = 'alpha(opacity=100)';
document.getElementById('mastercard').style.filter = 'alpha(opacity=13)';
document.getElementById('amex').style.filter = 'alpha(opacity=13)';
document.getElementById('discover').style.filter = 'alpha(opacity=13)';
}
document.getElementById('confirmCardType').innerHTML = 'Visa';
}
else if (firstchar == 5) {
if (document.getElementById('visa').style.opacity) {
document.getElementById('visa').style.opacity = .13;
document.getElementById('mastercard').style.opacity = 1;
document.getElementById('amex').style.opacity = .13;
document.getElementById('discover').style.opacity = .13;
}
else {
document.getElementById('visa').style.filter = 'alpha(opacity=13)';
document.getElementById('mastercard').style.filter = 'alpha(opacity=100)';
document.getElementById('amex').style.filter = 'alpha(opacity=13)';
document.getElementById('discover').style.filter = 'alpha(opacity=13)';
}
document.getElementById('confirmCardType').innerHTML = 'MasterCard';
}
else if (firstchar == 6) {
if (document.getElementById('visa').style.opacity) {
document.getElementById('visa').style.opacity = .13;
document.getElementById('mastercard').style.opacity = .13;
document.getElementById('amex').style.opacity = .13;
document.getElementById('discover').style.opacity = 1;
}
else {
document.getElementById('visa').style.filter = 'alpha(opacity=13)';
document.getElementById('mastercard').style.filter = 'alpha(opacity=13)';
document.getElementById('amex').style.filter = 'alpha(opacity=13)';
document.getElementById('discover').style.filter = 'alpha(opacity=100)';
}
document.getElementById('confirmCardType').innerHTML = 'Discover';
}
else {
if (document.getElementById('visa').style.opacity) {
document.getElementById('visa').style.opacity = .13;
document.getElementById('mastercard').style.opacity = .13;
document.getElementById('amex').style.opacity = .13;
document.getElementById('discover').style.opacity = .13;
}
else {
document.getElementById('visa').style.filter = 'alpha(opacity=13)';
document.getElementById('mastercard').style.filter = 'alpha(opacity=13)';
document.getElementById('amex').style.filter = 'alpha(opacity=13)';
document.getElementById('discover').style.filter = 'alpha(opacity=13)';
}
document.getElementById('confirmCardType').innerHTML = '';
}
return true;
}
编辑:这是jQuery解决方案,它大大缩短了代码:
function setCardType() {
var cardnumber = document.getElementById('cardnumber').value;
cardnumber = cardnumber.replace(/[^0-9]/g,'');
document.getElementById('cardnumber').value = cardnumber;
var firstchar = cardnumber.charAt(0);
if (firstchar == 3) {
$('#visa').css('opacity', .13);
$('#mastercard').css('opacity', .13);
$('#amex').css('opacity', 1);
$('#discover').css('opacity', .13);
document.getElementById('confirmCardType').innerHTML = 'American Express';
}
else if (firstchar == 4) {
$('#visa').css('opacity', 1);
$('#mastercard').css('opacity', .13);
$('#amex').css('opacity', .13);
$('#discover').css('opacity', .13);
document.getElementById('confirmCardType').innerHTML = 'Visa';
}
else if (firstchar == 5) {
$('#visa').css('opacity', .13);
$('#mastercard').css('opacity', 1);
$('#amex').css('opacity', .13);
$('#discover').css('opacity', .13);
document.getElementById('confirmCardType').innerHTML = 'MasterCard';
}
else if (firstchar == 6) {
$('#visa').css('opacity', .13);
$('#mastercard').css('opacity', .13);
$('#amex').css('opacity', .13);
$('#discover').css('opacity', 1);
document.getElementById('confirmCardType').innerHTML = 'Discover';
}
else {
$('#visa').css('opacity', .13);
$('#mastercard').css('opacity', .13);
$('#amex').css('opacity', .13);
$('#discover').css('opacity', .13);
document.getElementById('confirmCardType').innerHTML = '';
}
return true;
}
$("#visa").css("opacity", .13);
jQuery会自动为您处理交叉兼容性问题。太好了...
相关文章:
- 如何更改文本框控件的不透明度值
- 在js中访问元素时不透明度和样式未定义,但在css中定义
- Greenstock不透明度动画从0到1再返回
- 如何在html画布上替换ByImage()而不是drawImage()(忽略不透明度)
- 设置1400个Raphael.js对象的不透明度动画会影响动画性能
- 选中复选框时降低父级的不透明度
- 更改alphaMap不透明度不会更新(THRE.JS R76)
- Jquery UI日期选择器没有'单击链接时不会再次显示
- 如何在页面向下滚动时获得图像以获得不透明度
- 在Materialize设计中删除转盘图像的不透明度
- 如何删除javascript中的不透明度
- 如何使用javascript在rgba中获取不透明度参数
- 如何在悬停时更改高图的不透明度
- 将所有angular2捆绑包包含在index.html中会使导入从内存获取数据,而不是再次从服务器请求数据
- 更改整个类的不透明度元素
- 具有不透明度和类似模态行为的向导
- 选择选项可更改图像的不透明度
- 使用媒体查询设置背景图像的不透明度
- 在画布上绘制不透明度(行中的点)javascript
- 使用 Javascript onkeyup() 更改 IE8 中的不透明度(再次)