我正在使用以下验证文本框,它只接受字母,最多50个字符。我直接在参数中传递对象。以下情况通过直接给出字段名称“my_text”工作正常。但是如果我在变量中传递它,那个时候它不起作用(注释if语句)。请帮我。我的要求是每次进入charater时,硬编码字段名称都不应该用于验证。
<html><head>
<script language=JavaScript>
function check_length(my_form,fieldName)
{
alert(fieldName);
// if (my_form.fieldName.value.length >= maxLen) {
if (my_form.my_text.value.length >= maxLen) {
var msg = "You have reached your maximum limit of characters allowed";
alert(msg);
my_form.my_text.value = my_form.my_text.value.substring(0, maxLen);
}
else{
var keyCode = window.event.keyCode;
if ((keyCode < 65 || keyCode > 90) && (keyCode < 97 || keyCode > 123) && keyCode != 32)
{
window.event.returnValue = false;
alert("Enter only Alphabets");
}
my_form.text_num.value = maxLen - my_form.my_text.value.length;}
}
</script>
</head>
<body>
<form name=my_form method=post>
<input type="text" onKeyPress=check_length(this.form,this.name); name=my_text rows=4 cols=30>
<br>
<input size=1 value=50 name=text_num> Characters Left
</form>
</body>
</html>
答案 0 :(得分:3)
试试这个:
if (my_form[fieldName].value.length >= maxLength)
引用对象的属性时,表单
object.constantName
和
object['constantName']
是一样的。请注意,在第二个中,我引用了属性名称。当您使用方括号而不是“。”时。为了引用属性,Javascript 在方括号中计算表达式。在您的情况下,总是有一个必须进行评估的变量,因此您必须使用方括号。