href onclick не работает на некоторых страницах - PullRequest
1 голос
/ 02 января 2012

У меня есть следующий код, я использую v похожий код на многих страницах, но на этой конкретной странице он просто не работает ни в ie, или в ff

вот код:

<form action='/productView.html' method=post name=prod_form>
<a  href='javascript:;' onclick='document.forms['prod_form'].submit(); return false;' class='button101' style='margin-left:92px;'>".$button_text."</a>
<input type=hidden name=action value='".$button_text."'>
<input type=hidden name=PRid value=".$databack3[PRid].">
<INPUT type='hidden' name='cat_id' value=".$databack3[prodcatID].">
<INPUT type='hidden' name='for_user_id' value=".$for_user_id.">
<input type=hidden name=source value=".$source."></form>

Однако, если я перехожу на обычную кнопку, как показано ниже, она работает нормально:

<form action='/productView.html' method=post name=prod_form>
<input type=submit name=action class=button99 value='".$button_text."' style='margin-left:85px;'
<input type=hidden name=PRid value=".$databack3[PRid].">
<INPUT type='hidden' name='cat_id' value=".$databack3[prodcatID].">
<INPUT type='hidden' name='for_user_id' value=".$for_user_id.">
<input type=hidden name=source value=".$source."></form>

Есть идеи?

Ответы [ 5 ]

8 голосов
/ 02 января 2012

Обернуть содержимое атрибута onclick в двойные кавычки (");

onclick="document.forms['prod_form'].submit(); return false;"

Просто чтобы прояснить, это не значит, что атрибуты требуют двойных кавычек, но вы не можете иметь одинаковые кавычки внутри ваших внешних кавычек, если только вы не избежите их.

Например:

  • ОК: <a href="#" onclick="do('this');">bar</a>
  • ОК: <a href="#" onclick='do("this");'>bar</a>
  • ОК: <a href="#" onclick="do(\"this\");">bar</a>
  • ОК: <a href="#" onclick='do(\'this\');'>bar</a>
  • Не OK: <a href="#" onclick='do('this');'>bar</a>
  • Не ОК: <a href="#" onclick="do("this");">bar</a>
4 голосов
/ 02 января 2012

Вот ваша проблема;

onclick='document.forms['prod_form'].submit(); return false;'

Используйте обычные кавычки для ваших аргументов HTML, и все будет в порядке.

Поскольку кажется, что вы используете PHP для создания строки с вашим HTML, вы попробуете это, чтобы избежать кавычек;

onclick=\"document.forms['prod_form'].submit(); return false;\"
3 голосов
/ 02 января 2012

он не может обнаружить form name, потому что он тоже находится в single quotes.

<a  href='#' onclick='document.forms["prod_form"].submit(); return false;' 
           class='button101' style='margin-left:92px;'>".$button_text."</a>

fiddle: http://jsfiddle.net/QFe3L/

1 голос
/ 02 января 2012

Это просто из-за использования одинарных кавычек.Просто измените

onclick='document.forms['prod_form'].submit(); return false;'

на

onclick="document.forms['prod_form'].submit(); return false;"
0 голосов
/ 02 января 2012
<b><form action='/productView.html' method=post name=prod_form> <a 
   href='javascript:;' onclick="document.forms['prod_form'].submit();
   return false;" class='button101'
   style='margin-left:92px;'>".$button_text."</a> <input type=hidden
   name=action value='".$button_text."'> <input type=hidden name=PRid
   value=".$databack3[PRid]."> <INPUT type='hidden' name='cat_id'
   value=".$databack3[prodcatID]."> <INPUT type='hidden'
   name='for_user_id' value=".$for_user_id."> <input type=hidden
   name=source value=".$source."></form>

   Hope it works

</b>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...