Подтвердить что ты не робот

Значение HTML-формы кнопки не размещено в Safari и Chrome

Я использую jQuery для отправки формы при нажатии кнопки. Затем я хотел бы проверить значение кнопки, однако это не отправляется в Safari и Chrome. Зачем? Есть ли работа вокруг?

Протестируйте следующий код в IE/FF, чтобы увидеть, что он работает, а затем протестируйте его в Safari/Chrome, чтобы убедиться, что это не так:

ButtonPostTest.php:

<?php
    if(isset($_POST['testBtn'])) {
        echo $_POST['testBtn'];
    }
?>
<html>
    <head>
    <title></title>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                $('#btn').click(function() {
                    $('form').submit();  // submit the form
                });
            });
        </script>
    </head>
    <body>
        <form action="" method="post">          
            <button id="btn" class="page-btn" type="submit" name="testBtn" value="Yes Button value is posted!">POST IT!</button>
        </form>
    </body>
</html>

UPDATE:

То же самое происходит с input:

<input id="btn" class="page-btn" type="submit" name="testBtn" value="Post this"></input>

Кроме того, это только проблема при отправке с помощью jQuery .submit() - без этого, он подает штраф с помощью кнопки или ввода.

4b9b3361

Ответ 1

Дайте ему имя.

<button type='submit' id='trash' name='trash' value="trash" class='red'>

Ответ 2

Как сказано выше, при использовании тега <button> вам нужны как name="", так и value="", например

<button name="Search" value="Simple" type="submit">Search</button>

VS

<button name="Search" value="Advanced" type="submit">Search</button>

В этом примере ваши данные POST будут иметь пару Key Value:

Поиск Простой

или

Поиск Дополнительно

И затем, основываясь на этом значении POST, вы можете написать свой код, чтобы предпринять соответствующие действия.:)

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

Ответ 3

Я думаю, что вы обнаружили ошибку webkit.

Я получаю то же самое тестирование в Chrome, ваша форма:

<form action="" method="post">          
   <button id="btn" class="page-btn" type="submit" name="testBtn" value="Yes Button value is posted!">POST IT!</button>
</form>

Это не отправляет данные. Если, однако, я добавляю другой элемент, в частности вход:

<form action="" method="post">          
   <input type="hidden" name="shim" value="" />
   <button id="testBtn" class="page-btn" type="submit" name="testBtn" value="Yes Button value is posted!">POST IT!</button>
</form>

Это отправляет оба значения. Это без JavaScript. Когда вы добавите элемент скрытой формы прокладки, похоже, что это имеет смысл.

Это решение нуждается в дополнительном тестировании, но оно может удовлетворить ваши потребности.

Ответ 4

<button> и <input> - два разных тега. Если вы хотите отправить свои значения кнопок, используйте тег <input>.

Ответ 5

Согласитесь с Vins, я бы использовал <input>.

Есть ли конкретная причина, по которой вы используете <button> вместо <input>? Обычно я предпочитаю <button> (позволяет добавлять значки и изображения), но я считаю, что существуют различия между браузерами относительно интерпретации значения...

Согласно w3schools Mozilla Developer Network, некоторые браузеры отправят атрибут value, в то время как другие браузеры, такие как IE7, неправильно отправят текст между тегами.

Ответ 6

Попробуйте это, чтобы отправить кнопку в виде отправки, поймав скрытый ввод.

PHP:

<?php
    if(isset($_POST['btname']))
        echo $_POST['btname'];
    }
 ?>

и html:

<form method="POST" action="" id="formname" name="formname">
<input name="btname" id="btname" type="hidden" />
<button onclick="document.formname.submit()" value="Submit">Send</button>
</form>

Ответ 7

Сколько значений вы используете?

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

Php молчит, когда вы превысите этот предел, поэтому вам нужно будет проверить журнал предупреждений или проверить его так:

1. Подсчитайте значения массива POST. Scripting в var_dump($_POST); (в безопасной среде песочницы) будет делать это лучше всего, так как вы можете посмотреть окончательный вывод значения, чтобы увидеть, где массив POST "отключается".

2. Затем запустите script для вывода информации php с помощью функции: phpinfo(). Проверьте значение "max_input_vars".

3. Если значение массива POST = значение "max_input_vars", вы превысили лимит.

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

Чтобы отредактировать значение (до 5000 в этом примере) в php.ini, добавьте или отредактируйте эту строку: max_input_vars = 5000