我在MVC视图上有一些输入字段,我想只允许输入字母Y或N.
当我使用Firefox(当前版本为23.0.1)对这些字段进行选项卡时,该字段的值会突出显示,我可以输入允许的字符,基本上会覆盖该值。例如,如果输入的值为N,则N会突出显示,然后我可以按Y,N将被Y替换.Hooray!
但是,当我使用Chrome或IE(10)时,字段会突出显示,但允许的键不会覆盖输入框中的值。字段取消突出显示,光标位于值的末尾。 Booo!
我错过了什么?
//Keydown and blur events for textboxes that only allow Y, or N
$(".onlyYN").keydown(function (e) {
if (e.keyCode === 89 ||
e.keyCode === 8 ||
e.keyCode === 9 ||
e.keyCode === 78 ||
e.keyCode === 13 ||
e.keyCode === 46 ||
e.keyCode === 16) {
clearError(this);
setControlValueToUpperCase(this);
return;
}
markControlAsWarning(this);
alertify.log("The " + $(this).attr('id') + " field only accepts the single characters 'Y' or 'N'");
e.preventDefault();
}).blur(function () {
if ($(this).val().toUpperCase() !== "Y" && $(this).val().toUpperCase() !== "N") {
markControlAsError(this);
alertify.error("The " + $(this).attr('id') + " field only accepts the single characters 'Y' or 'N'");
return;
}
clearError(this);
setControlValueToUpperCase(this);
});
答案 0 :(得分:0)
好吧,我似乎很快就使用了setControlValueToUpperCase()方法。所以首先将我的keydown更改为if语句
if (e.keyCode === 89 ||
e.keyCode === 8 ||
e.keyCode === 9 ||
e.keyCode === 78 ||
e.keyCode === 13 ||
e.keyCode === 46 ||
e.keyCode === 16) {
clearError(this);
return;
}
解决了我的问题。
function setControlValueToUpperCase(ctrl) {
/// <summary>
/// Set the contents of the control value to upper case
/// </summary>
/// <param name="ctrl">The control reference which contains value</param>
$(ctrl).val($(ctrl).val().toUpperCase());
}
Horray Me !!