所以我尝试将PX转换为EM,但如果用户输入16px
,而不是16
,我想删除PX
。这就是我使用
.replace(/^EM+/i, '')
但由于某种原因,它没有删除。
Here's a demo。使用PX
输入任意值,您就会获得NaN
。还有一种方法可以抑制NaN
,以便它不会显示出来吗?
答案 0 :(得分:1)
我对此的理解是^
字符指定了行的开头,+
字符指定必须至少有一个字符... This example works :
.replace(/EM+/i, '')
答案 1 :(得分:0)
分叉小提琴:http://jsfiddle.net/FDkLa/
请勿使用^
,因为它告诉您匹配字符串的开头。
答案 2 :(得分:0)
^
匹配字符串的开头,因此这只会在开头删除px。请改用:
.replace(/EM/i, '')
+
也是不必要的; M+
它匹配1个或多个M&#(例如" EMMM"匹配)。
答案 3 :(得分:0)
你去。
剥离所有只留下数字的字符。不再是NaN。
编辑:好的,用巨大的数字修复了问题。
在此确认Latest Version
$(document).ready(function () {
$('.px').keyup(function () {
var px = $(this).val().replace(/\D/g,'');
var rep = (px / 16);
$('.em').val(rep);
});
$(".em").keyup(function () {
var em = $(this).val().replace(/\D/g,'');
var rem = (em * 16);
$('.px').replace().val(rem);
});
});
答案 4 :(得分:0)
你可能想在你的事件监听器中尝试这样的事情:
var val = this.value;
if (/^\d+(?:px)?$/i.test(val)) {
// do conversion stuff
} else {
// display error to user, perhaps a red border on the input
}
答案 5 :(得分:0)
最简单的方法可能是删除[0-9\.]
上所有不是keyup
(句号或数字)的字符。然后,您可以执行计算并更新<input>
s。
<强> HTML 强>
px <input type="text" id="px"> <br>
em <input type="text" id="em">
<强>的JavaScript 强>
$("#px").keyup(function () {
var px = $(this).val().replace(/[^\d\.]+/g, ""); // replace all non 0-9 or .
$(this).val(px);
$("#em").val(parseInt(px)/16); // set the value of em to px/16
})
$("#em").keyup(function(){
var em = $(this).val().replace(/[^\d\.]+/g, ""); // replace all non 0-9 or .
$(this).val(em);
$("#px").val(parseInt(em) * 16); //set the value of px to em*16
})