将表单名称和表单对象名称传递给函数

时间:2012-03-21 14:40:51

标签: javascript

我无法理解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>

感谢您的关注!

1 个答案:

答案 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;
}