(javascript) onClick = "form.submit (); не работает в IE & Opera - PullRequest
7 голосов
/ 20 августа 2009

У меня есть код (см. Ниже). Он отлично работает в Firefox: он сохраняет отправленную информацию после нажатия кнопки __ JL_SAVE и сохраняет пользователя на той же странице. Но в Internet Explorer & Opera он только перенаправляет на индексную страницу (index.php) и не сохраняет отправленную информацию. Что я могу сделать для решения этой проблемы? Спасибо.

Вот мой код:

<form action="index.php" id="mosForm" method="post" enctype="multipart/form-data">

    <fieldset>
        <legend><?=__JL_ABOUT_MYSELF?></legend>
        <span class="a" onclick="showHideLegend('about_myself_1')"><?=__JL_EDIT_BLOCK;?></span>
        <div id="about_myself_descr" style="display: block"><?=__JL_SELF_DESCR;?></div>
        <div id="about_myself_1" style="display: none"><?php include "html/about_myself_fill.php"?></div>
        <div id="about_myself_2""><?php include "html/about_myself_show.php"?></div>
    </fieldset>

    <fieldset>
        <legend><?=__JL_ABOUT_MYSELF?></legend>
        <span class="a" onclick="showHideLegend('type_1')"><?=__JL_EDIT_BLOCK;?></span>
        <?php if ($typ_block) {?>
            <?php /* <input type="checkbox" id="jl_type_block" name="jl_type_block" <?php if ($roon_type_block) echo 'checked ';?> /> */ ?>
            <input type="checkbox" id="jl_type_block" name="jl_type_block" disabled <?php  echo 'checked ';?> />
            <label for="jl_type_block"><?=__JL_ON_BLOCK?></label>
        <?php } else {
            echo __JL_OFF_BLOCK;
        }?>

        <div id="about_myself_descr" style="display: block"><?=__JL_SELF_DESCR;?></div>

        <div id="type_1" style="display : none">
            <?php include "html/type.php"?>
        </div>
        <?php if ($typ_block) { ?>
            <div id="type_2">
                <?php include "html/type_show.php"?>
            </div>
        <?php } ?>
        </fieldset>

        <fieldset>
            <legend><?=__JL_INTEREST?></legend>
            <span class="a" onclick="showHideLegend('interest_1')"><?=__JL_EDIT_BLOCK;?></span>
            <?php if ($interest_block) {?>
                <input type="checkbox" id="jl_interest_block" name="jl_interest_block" disabled <?php echo 'checked ';?> />
                <label for="jl_interest_block"><?=__JL_ON_BLOCK?></label>
            <?php } else
                echo __JL_OFF_BLOCK;
            ?>
            <div id="interest_descr" style="display:block"><?=__JL_INTEREST_DESCR;?></div>
            <div id="interest_1" style="display:none">
                <?php include "html/interest.php"?>
            </div>
            <?php if ($interest_block) { ?>
                <div id="interest_2">
                <?php include "html/interest_show.php"?>
                </div>
            <?php } ?>
        </fieldset>


            <input type="submit" name="save" value="__JL_SAVE" onClick="mosForm.submit();" />
            <input type="hidden" name="option" value="com_joomlove" />
            <input type="hidden" id="task" name="task" value="save_info" />
            </form>

Полный источник доступен здесь: http://narkoz.pastebin.com/f4f036f5

Ответы [ 3 ]

10 голосов
/ 20 августа 2009

Вы должны действительно выполнить любую логику, связанную с отправкой, в обработчике события submit «FORM», а не «click» одного из элементов FORM. e.g.:

<form ... onsubmit="return validateForm(this);"> ... </form>

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

8 голосов
/ 20 августа 2009
  1. Если вы не меняете поведение формы, зачем использовать JavaScript для отправки формы ?, вы уже находитесь в кнопке отправки.

  2. Вы должны попытаться дать форму name = "mosForm", а не просто id = "mosForm", чтобы можно было найти ссылку DOM из этого обработчика событий.

1 голос
/ 27 сентября 2012

Когда у вас есть:

<form method="post" action="somefile.php" name="form" id="form">
<button type="button" name="submit" onclick="$('#form').submit()">go</button>
</form>

Работает ли в IE8, Opera, Chrome, но не в Firefox (14):

Firefox имеет проблему с: name="submit". Когда вы изменяете атрибут name в: name="submit_ff" (или что-то еще), он также работает в Firefox.

...