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

标签 javascript

我无法理解 Javascript 的工作原理...我想传递表单名称和提交按钮名称,以便该函数可以评估传递的值并启用或禁用提交按钮。

如果我明确使用名称,它就可以工作,但我希望它能够动态工作。不幸的是,我只是不明白如何正确使用这些参数。

现在第一个文档语句有效(使用了表单名称和按钮名称),为什么使用参数的第二个文档语句不起作用?我从警报中知道表单名称不正确并且不能按原样使用,但即使我明确命名表单但使用看起来正确的传递按钮名称,这也不起作用。

我知道这一定是 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>

感谢您的关注!

最佳答案

尝试:

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

关于javascript - 将表单名称和表单对象名称传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9806842/

相关文章:

javascript 包含函数 window.onload

javascript - 如何访问Angular 2中VideoJs函数中的成员变量和方法?

javascript - Websockets 不再对我有用

javascript - 需要检测网页中哪个 &lt;script&gt; block 与另一个 &lt;script&gt; block 交互?

javascript - 在重定向之前如何提醒用户

javascript - 将javascript关联数组转换为多对象数组

javascript - AJAX 堆栈来自 PHP 的响应

javascript - XHTML Transition 中的 iframe 不起作用

javascript - JQuery show() 在 Internet Explorer/Chrome 中延迟

javascript - 移动设备上的 HTML 5 音频 .play() 延迟