Повторяющаяся HTML-форма не вызывает функцию onsubmit - PullRequest
0 голосов
/ 07 мая 2018

У меня проблема с отправкой:

echo "<form method='post' action='' onsubmit='return confirm(\"do you want to delete \" + {$array[0][1]} + \" \" +{$array[0][3]});'>
<input type='submit' name='delete' value='Delete'>
</form>";

Если я нажму кнопку отправки, диалоговое окно подтверждения не откроется. Форма отправляется, а мои материалы удаляются. Я также попытался поместить JS во внешний файл, но это также не работает.

Вот код из внешнего файла:

function submitDeleteForm(prename, name) {
    confirm("Do you want to delete " + prename + " " + name + " ?")
}

И я только что использовал return submitDeleteForm внутри onsubmit.

Визуализированный HTML:

<form method="post" action="apprentice" onsubmit="return confirm("Do you want to delete " + name+ " " +lastname);">
                            <input type="submit" name="delete" value="Delete">      
                          </form>

При попытке с внешним файлом файл HTML содержит файл, что означает, что он не завершится ошибкой при импорте скрипта.

Я надеюсь, что кто-то может мне помочь. Спасибо за ответы.

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Вы допустили некоторую ошибку при вставке двойных кавычек в Подтверждение (). Следующий код может работать для вас.

   echo "<form method='post' action='' onsubmit='return confirm(\"do you want to delete {$array[0][1]}  {$array[0][3]}\");'>
    <input type='submit' name='delete' value='Delete'>
    </form>";

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

$array[0][1] = "Vijay1"
$array[0][3] = "Vijay3"

только для иллюстрации. Для этого ввода ваш код сгенерирует следующий HTML-код (отображается):

enter image description here

где vijay1 и vijay3 станут строковыми переменными JavaScript вместо константных строк. Это ситуация, когда вы используете строковую переменную JavaScript, которая никогда не была определена в вашем коде JavaScript.

0 голосов
/ 07 мая 2018

Вы уверены, что это рендеринг HTML?Прежде чем редактировать ваш пост, я определенно уверен, что именно в этом и заключается ваша проблема. Согласно моему опыту, запись в параметры для обработчиков js прерывается из-за невозможности экранировать строку (например, двойные кавычки), так как она отображается сервером в php.

Решение: закодируйте ваши строковые данные в base64 для безопасного кодирования строки с экранированными символами.


    $encodedString = base64_encode("do you want to delete $array[0][1] $array[0][1]?");
    onsubmit='return confirm($encodedString)'

в соответствии с документацией по строке base64: это кодирование предназначено для того, чтобы двоичные данные выдерживали транспортировку через транспортные уровни, которыене 8-битные чистые, такие как почтовые тела.

Ссылка: http://php.net/manual/en/function.base64-encode.php

...