2013-10-27 95 views
0

这就是为什么我总是讨厌Javascript,因为它总是会做这样奇怪的事情......我在一个没有任何问题的脚本中添加了这个EXACT代码,然后粘贴EXACT代码在另一个,它根本不工作。太令人沮丧了。这里是代码请问是什么问题?此外,如果你可以把它通过elementID工作,而不是形式的名称JavaScript不在一个网站上工作,但在另一个网站上很好

<script language="javascript" type="javascript"> 
<!-- 
function randomPassword(length) 
{ 
chars = "[email protected]#$%^&*()-+<>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> 
+0

什么是'passform'? –

+0

你有没有检查控制台日志?你可能会遇到syntex错误。 – Manwal

+0

上面显示的表单的名称。 –

回答

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属性中时才会使用它。请勿在script标签内使用<!---->。这是一个古老的构造,用于防止代码在浏览器的页面中显示,但不知道script标记的用途。那些不再存在了。

+0

哎呀对不起忽略了,我刚编辑了这个问题passform是myForm的它仍然不工作 –

+0

OK我想,新的代码,它不工作。它是否在你的工作?我使用Firefox和Chrome,当我按一下按钮 –

+0

@MrJ什么也没有发生:有一个'length'场也不翼而飞,见上面我的编辑。我添加了一个链接到一个工作示例。 – Guffa

0

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

无论如何,这是一种过时且可能有害的访问元素的方式 - 尽管如此,根据您仍在使用HTML注释来隐藏来自“旧”浏览器的代码,我怀疑你已经拿起这个里程碑的JavaScript书:p

您的randomPassword功能没问题,但在几个方面改变您的formSubmit是错误的。

  • 除了访问错误的表单,它也试图访问一个名为“length”的字段,这个字段在这个表单中是不存在的。
  • 您应该为您想要在JavaScript中访问的元素分配ID,并使用document.getElementById('someID')来获取它们。
  • 实际上你并没有在任何地方拨打formSubmit。你有没有onClickonSubmit事件处理程序?
+0

是请忽略我已经编辑我的帖子可是没有passform中只myForm的,它仍然does not工作的代码passform –

1

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

function randomPassword(length) 
{ 
chars = "[email protected]#$%^&*()-+<>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; 
} 
相关问题