0

这就是为什么我一直讨厌 Javascript,因为它总是会做类似这样的奇怪事情……我在脚本中添加了这个 EXACT 代码,没有出现任何问题,然后我将 EXACT 代码粘贴到另一个脚本中,但它根本不起作用。太令人沮丧了。这是代码请问有什么问题吗?另外,如果您可以通过 elementID 而不是表单名称使其工作,那将非常感谢

<script language="javascript" type="javascript">
<!-- 
function randomPassword(length)
{
chars = "abcdefghijklmnopqrstuvwxyz!@#$%^&*()-+<>ABCDEFGHIJKLMNOP1234567890";
    pass = "";
for(x=0;x<length;x++)
{
     i = Math.floor(Math.random() * 67);
     pass += chars.charAt(i);
}
return pass;
}

function formSubmit()
{
    myform.row_password.value = randomPassword(myform.length.value);
    return false;
}
// -->
</script>


<form name="myform" method="post" action="">
  <table width="100%" border="0">
    <tr>
      <td width="120">Username:</td>
      <td><input name="update_username" type="text" value="" size="40"></td>
    </tr>
    <tr>
      <td>Password:</td>
      <td><input name="row_password" type="text" size="40"> &nbsp; <input type="button"         class="button" value="Generate" onClick="javascript:formSubmit();" tabindex="2"></td>
    </tr>
  </table>
</form>
4

3 回答 3

1

删除javascript:添加document.myform和更改......randomPassword(myform.update_username.value.length);现在似乎工作...... JS Bin 演示

function randomPassword(length)
{
chars = "abcdefghijklmnopqrstuvwxyz!@#$%^&*()-+<>ABCDEFGHIJKLMNOP1234567890";
    pass = "";

for(x=0;x<length;x++)
{
     i = Math.floor(Math.random() * 67);
     pass += chars.charAt(i);
}
return pass;
}

function formSubmit()
{
document.myform.row_password.value = randomPassword(myform.update_username.value.length);
    return false;
}
于 2013-10-27T10:49:42.630 回答
0

中的代码formSubmit期望表单具有名称passform。相应地更改表单,或更改代码以使用myform而不是passform.

或者,您可以更改代码以将表单作为参数:

function formSubmit(frm) {
  frm.row_password.value = randomPassword(myform.length.value);
  return false;
}

然后使用以下命令调用它:

onclick="formSubmit(this.form);"

您缺少length在表单中调用的字段:

<input type="hidden" name="length" value="10">

演示:http: //jsfiddle.net/Guffa/DDn6W/

旁注:不要javascript:在将代码放入事件属性时使用。这仅在您将代码放入href属性时使用。不要在标签内使用<!--and 。这是一种古老的结构,可以防止代码出现在不知道标签用途的浏览器的页面中。那些已经不存在了。-->scriptscript

于 2013-10-27T10:36:23.803 回答
0

passform.row_password.value正在寻找一个名为“passform”的表单,但在这段代码中你有<form name="myform">.

无论如何,这是一种过时且可能有害的访问元素的方式 - 但是,从您仍在使用 HTML 注释来隐藏“旧”浏览器的代码这一事实来看,我怀疑您是否从这个千年:p

您的randomPassword功能很好,但formSubmit在几个方面改变您的功能是错误的。

  • 除了访问错误的表单外,它还试图访问一个名为“length”的字段,该字段在此表单中是不存在的。
  • 您应该为要在 JavaScript 中访问的元素分配 ID,并使用它document.getElementById('someID')来获取它们。
  • 你实际上并没有formSubmit在任何地方打电话。你可能有一个onClickonSubmit事件处理程序吗?
于 2013-10-27T10:37:27.973 回答