【发布时间】:2015-05-08 05:31:13
【问题描述】:
我正在尝试使用 jquery 在 keyup 事件上设置 html 输入字段值。
<input style="width: 45%;" type="text" name="user_phone" value="" placeholder="Your phone number" />
首先我尝试像这样使用 .val() 设置器。
http://jsfiddle.net/6xwzy81k/3/
$(document).ready(function(){
$('input[name=user_phone]').keyup(function() {
var number = $('input[name=user_phone]').val();
if (!number.contains('(') && !number.contains(')') && number.length === 2) {
$('input[name=user_phone]').val('(' + number + ')');
} else if (number.contains('(') && !number.contains(')') && number.length === 3) {
$(this).val(number + ')');
} else if (!number.contains('(') && number.contains(')') && number.length === 3) {
$(this).val('(' + number);
}
});
});
这在 Firefox 中运行良好,但在 chrome 和 safari 中它不起作用。然后正如其他一些问题中所建议的那样,我使用 .prop() 而不是 .val() 尝试了这种方式
http://jsfiddle.net/6xwzy81k/2/
$(document).ready(function(){
$('input[name=user_phone]').keyup(function() {
var number = $('input[name=user_phone]').val();
if (!number.contains('(') && !number.contains(')') && number.length === 2) {
$('input[name=user_phone]').prop('value','(' + number + ')');
} else if (number.contains('(') && !number.contains(')') && number.length === 3) {
$(this).prop('value', number + ')');
} else if (!number.contains('(') && number.contains(')') && number.length === 3) {
$(this).prop('value', '(' + number);
}
});
});
同样的事情发生了,它在 firefox 中按预期工作,但在 safari 或 chrome 中却没有。
【问题讨论】:
-
我认为
contains()行不通。使用indexOf() -
好的,我试试,谢谢建议
-
根据MDN docs:
String.prototype.contains()更名为String.prototype.includes()。此外:这是一项实验性技术,是 ECMAScript 6(Harmony)提案的一部分。由于该技术的规范尚未稳定,请查看兼容性表以了解在各种浏览器中的使用情况。
标签: jquery html google-chrome