2013-10-27 5 views
0

Вот почему я всегда ненавидел Javascript, так как он всегда делает такие странные вещи ... Я добавил этот ТОЧНЫЙ код в сценарий без какой-либо одной проблемы, затем вставляю ТОЧНЫЙ код в другом, и он вообще не работает. Настолько разочаровывающе. Вот код, в чем проблема, пожалуйста? Кроме того, если вы могли бы сделать его работу по 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 is myform, он все еще не работает –

+0

OK Я пробовал этот новый код, и он не работает. Работает ли он на вашем конце? Я использовал Firefox и Chrome, и ничего не происходит, когда я нажимаю кнопку –

+0

@MrJ: Также отсутствовало поле 'length', см. Мое редактирование выше. Я добавил ссылку на рабочий пример. – Guffa

0

passform.row_password.value ищет форму с именем «passform», но в этом коде у вас есть <form name="myform">.

В любом случае это устаревший и потенциально опасный способ доступа к элементам - хотя, судя по тому, что вы все еще используете комментарии HTML, чтобы скрыть свой код от «старых» браузеров, я сомневаюсь, что вы подняли книга JavaScript с этого тысячелетия: p

Ваша randomPassword функция в порядке, но изменить ваш formSubmit не так в пару способов.

  • Помимо доступа к неправильной форме, он также пытается получить доступ к полю под названием «длина», которое отсутствует в этой форме.
  • Вы должны назначить идентификаторы элементам, к которым вы хотите получить доступ, в JavaScript и использовать document.getElementById('someID') для их получения.
  • Вы на самом деле не звоните formSubmit в любом месте. Возможно, у вас есть обработчик событий onClick или onSubmit?
+0

Да, пожалуйста, проигнорируйте passform, я уже отредактировал мое сообщение, у кода does not есть passform, в нем только myform, и он все еще не работает –

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; 
} 
Смежные вопросы