我无法理解Javascript的工作方式...我想传递一个表单名称和提交按钮名称,以便该函数可以评估传递的值并启用或禁用提交按钮。
如果我明确使用这些名称但我希望它能动态工作,那么它是有效的。不幸的是,我只是不明白如何正确使用这些论点。
现在第一个文档语句有效(使用表单名称和按钮名称),为什么不使用第二个where参数?我从警报中知道表单名称不正确并且不能按原样使用,但即使我明确地命名表单但使用传递的按钮名称看起来是正确的,这也不会起作用。
我知道这必须是javascript 101,但我一次又一次地遇到这种情况,我只是没有得到什么。有人愿意向我解释这个吗?
<script type="text/javascript">
function aTest(formName,objName,val){
if (val<5){
document.aForm.aBtn.disabled=false;
alert(formName+" - "+objName);
}
else {
document.formName.objName.disabled=true;
}
}//end function aTest(formName,objName)
</script>
<form name="aForm">
<input name="testFld" type="text" onBlur="aTest(this.form,'aBtn',this.value)">
<input name="aBtn" type="submit" value='submit'></form>
感谢您的关注!
答案 0 :(得分:2)
尝试:
document[formName][objName].disabled = true;
当您需要通过某个表达式的值而不是常量来访问对象的属性时,可以使用方括号运算符。计算括号内的表达式,然后将其值视为要查找的属性名称。
现在,确保“formName”确实是表单的名称可能是明智的:
if (document[formName] != null && document[formName][objName] != null) {
document[formName][objName].disabled = true;
}
或更具惯用性:
if (document[formName] && document[formName][objName]) {
document[formName][objName].disabled = true;
}