在循环中包含特定属性
Including specific property in loop
我有一段代码,可以在输入中添加后缀。因此,用户使用em比使用px更容易。不过我遇到了一个小问题。
我将属性包含在一个数组中,并在它们之间循环,以查看哪些字段需要后缀以及它们需要什么后缀。这一直很好,直到我需要将属性"border-width"更改为px而不是em,但保持宽度em。这有道理吗?
基本上,我需要在不包括宽度的情况下,将边界宽度字段包括在我的异常中。
我的jQuery看起来像这个
var valueArray = ["padding", "width", "Width", "height", "Height"];
for(var i = 0, ii = valueArray.length; i < ii; i++){
if ($("input[name*='" + valueArray[i] + "']").attr('name') === 'kiosk_height' || $("input[name*='" + valueArray[i] + "']").attr('name') === 'kiosk_width' || $("input[name*='" + valueArray[i] + "']").attr('name') === 'border-width'){
$("input[name*='" + valueArray[i] + "']").on("focusout", function() {
var value = $(this).val();
if(value.indexOf("em") <= 0 && value.indexOf("px") <= 0 && value.indexOf("%") <= 0 && $(this).val().length != 0){
var newVal = value + 'px';
$(this).val(newVal).trigger('change');
}
});
}else{
$("input[name*='" + valueArray[i] + "']").on("focusout", function() {
var value = $(this).val();
if (value.indexOf("em") <= 0 && value.indexOf("px") <= 0 && value.indexOf("%") <= 0 && $(this).val().length != 0) {
var newVal = value + 'em';
$(this).val(newVal).trigger('change');
}
});
}
}
这是我创建的jsFiddle,其中包括html。https://jsfiddle.net/q3b0t8af/2/
我无法更改html,我一直在使用名称字段来调用特定的字段。
为您制作:
https://jsfiddle.net/q3b0t8af/3/
你所要做的就是使用一个排除数组:
var valueArray = ["padding", "width", "Width", "height", "Height"];
var exceptionArray = ['kiosk_height','kiosk_width','border-width'];
$.each($("input"), function(i,v){
if ($(v).attr('name') != undefined && $.inArray($(v).attr('name').trim(), exceptionArray) > -1) {
$(v).on("focusout", function() {
var value = $(this).val();
if (value.indexOf("em") <= 0 && value.indexOf("px") <= 0 && value.indexOf("%") <= 0 && $(this).val().length != 0) {
var newVal = value + 'px';
}
$(this).val(newVal).trigger('change');
});
} else {
$(v).on("focusout", function() {
var value = $(this).val();
if (value.indexOf("em") <= 0 && value.indexOf("px") <= 0 && value.indexOf("%") <= 0 && $(this).val().length != 0) {
var newVal = value + 'em';
$(this).val(newVal).trigger('change');
}
});
}
});
是否可以选择更明确地使用"em"answers"px"选择器?这样就可以工作了(还稍微清理了一下代码)。
var emArray = ["padding", "padding-left", "padding-right ",
"padding-bottom", "padding-top ", "width ", "height"];
var pxArray = ["border-width ", "kiosk_height", "kiosk_width"];
for (var i=0; i < emArray.length; i++)
$("input[name='" + emArray[i] + "']").on("focusout", {unit:'em'}, dostuff);
for (var i=0; i < pxArray.length; i++)
$("input[name='" + pxArray[i] + "']").on("focusout", {unit:'px'}, dostuff);
function dostuff(event) {
var value = $(this).val();
var unit = event.data.unit;
if (value.indexOf("em") <= 0 && value.indexOf("px") <= 0 &&
value.indexOf("%") <= 0 && $(this).val().length != 0) {
$(this).val(value + unit).trigger('change');
}
}
相关文章:
- 带有填充属性的SVG矩形显示在包含元素的上方插入框阴影
- 在循环中包含特定属性
- JavaScript选择器:查找包含具有特定属性的子体的节点
- 访问键中包含空格的嵌套属性
- 使用 Chai - 如何检查对象属性是否包含 DOM 元素
- 在包含带有jquery或js的html的变量中禁用change属性
- 如果指令包含在另一个指令中,我如何在隔离范围内添加双向数据绑定属性
- Javascript:如何制作一个包含4个具有相同属性的对象的数组
- 句柄中包含括号的问题处理属性
- 替换对象's属性,其中包含JavaScript中另一个对象的属性,不包含库
- Javascript函数'的属性,该属性包含其代码
- jQuery 选择
,自定义属性包含“:” - 属性包含选择器 * 替代
- 获取其子属性包含值的对象
- 如何使用jQuery'检查连字符后的内容;s”;属性包含前缀选择器”;
- 属性包含返回空数组的单词选择器
- 我怎样才能得到每一个"标签which "href"属性包含单词"youtube&
- 击倒“;如果viewModel属性包含'一些文本'&”;
- 如何使用正则表达式匹配不包含特定子字符串的字符串?
- 属性包含使用change的选择器[name*= " value "]