Радиокнопка в поле формы всегда отправляется как ON / TRUE - PullRequest
2 голосов
/ 19 ноября 2010

У меня есть довольно простая форма, настроенная с полем ввода для одной радиокнопки.

Есть php-скрипт, который обрабатывает форму и вставляет значения в базу данных mysql.По какой-то причине, каждый раз, когда я заполняю форму, независимо от того, выбрано ли у меня радио, результат всегда ВКЛ / ИСТИНА.

вот мое поле ввода:

<input type="radio" name="news" id="news" class="radio" value="yes" />

Вот часть кода PHP, которая должна обрабатывать это:

if(isset($_POST['news']))
{
$news = "Yes";
}
else
{
$news = "No";
}

Может кто-нибудь сказать мне, в чем проблема с этим кодом, или мне нужно будет публиковать больше?

вот полный код формы:

<form method="POST" id="ipad" name="ipad" action="list.php">
<input type="text" onfocus="if (this.value == 'First Name') {this.value = '';}" onblur="if (this.value == '') {this.value = 'First Name';}" value="First Name" id="fname" name="fname" class="inputtext">


<input type="text" onfocus="if (this.value == 'Last Name') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Last Name';}" value="Last Name" id="lname" name="lname" class="inputtext">

<input type="text" onfocus="if (this.value == 'Email') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Email';}" value="Email" id="email" name="email" class="inputtext">

<input type="text" onfocus="if (this.value == 'Code') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Code';}" value="Code" id="code" name="code" class="inputtext">


<input type="radio" value="" class="radio" id="news" name="news">
<div class="radiotext">sign up?</div>

  </form>

Обратите внимание, что для ввода переключателя не применяется javascript.Я попытался заполнить значение = "" YES или NO или оставить его пустым.

Ответы [ 4 ]

1 голос
/ 19 ноября 2010
if (isset($_POST['news']) && $_POST['news'] == 'yes'){
    $news = "Yes";
}
else
{
   $news = "No";
}
1 голос
/ 19 ноября 2010

Вам необходимо проверить значение радиокнопки . Переменная будет всегда присутствовать, поэтому isset() всегда будет возвращать true.

if(!empty($_POST['news']) and ($_POST['news'] == 'yes'))
0 голосов
/ 16 августа 2018

Вам нужно обойти это следующим образом ...

Вам нужно добавить hidden ввод в вашу форму, и когда вы нажимаете одну из кнопок radio, вы вызываете функцию, котораяизменит значение ввода hidden на id .. и здесь все пошагово:

  1. Добавьте скрытый ввод в вашу форму и дайте ему имя иИдентификатор:

    <input type="hidden" id="IsFormer" name="IsFormerValue" value="">

  2. Добавить атрибут при нажатии для обоих переключателей:

    <input type="radio" id="Former" name="IsFormer" onclick="ToggleIsFormer('Yes')">

    <input type="radio" id="NotFormer" name="IsFormer" onclick="ToggleIsFormer('No')">

  3. Добавьте функцию в Javascript:

    function ToggleIsFormer (Value) { document.getElementById('IsFormer').value = Value; }

  4. Наконец, в PHP вы проверяете значениес именем скрытого ввода , а не с именем переключателя .

Ниже приведены шаги для вашего кода ( tryсначала делай сам;) ):


<form method="POST" id="ipad" name="ipad" action="list.php">
    <input type="text" onfocus="if (this.value == 'First Name') {this.value = '';}" onblur="if (this.value == '') {this.value = 'First Name';}" value="First Name" id="fname" name="fname" class="inputtext">
    <input type="text" onfocus="if (this.value == 'Last Name') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Last Name';}" value="Last Name" id="lname" name="lname" class="inputtext">
    <input type="text" onfocus="if (this.value == 'Email') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Email';}" value="Email" id="email" name="email" class="inputtext">
    <input type="text" onfocus="if (this.value == 'Code') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Code';}" value="Code" id="code" name="code" class="inputtext">

    <input type="radio" class="radio" id="news" name="news" onclick="ToggleWithNews()">
    <div class="radiotext">Sign up?</div>

    <input type="hidden" id="WithNews" name="WithNewsValue" value="No">
</form>

<script>
    function ToggleWithNews () {
        document.getElementById('WithNews').value = 'Yes';
    }
</script>

Готово !!!


Моя заметка: Если у вас есть только опция, и зритель может включить или выключить эту опциюn, вы должны использовать 2 радиокнопки для Yes и одну для No, потому что одна радиокнопка не сможет отменить проверку после ее проверки.

или

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


Надеюсь, мой ответ вам помог:)

0 голосов
/ 16 октября 2013

о том коде JQuery, Javascript не должен быть внутри HTML, чтобы работать. Если бы я был вами, я бы искал в моем коде .attr («проверено», «проверено») или .prop («проверено»);

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