2

ユーザーがオプションを選択する必要があるドロップダウンメニューがあります。オプションがそこにリストされていない場合、ユーザーはチェックボックスをオンにすると同時に、ドロップダウンメニューを無効にしてテキストボックスを有効にすることができます。このようにして、ユーザーはメニューにリストされていないオプションを書くことができます。それはうまくいきます。ただし、ユーザーがチェックボックスをオンにして別のオプションを入力し、送信を押した場合、たとえば、フォーム内の他の項目(検証)が間違っているためにシステムがフォームに戻る場合、ユーザーがすでにチェックボックスをオンにしている場合は、ドロップダウンメニューが無効になり、テキストボックスが有効になり、ユーザーが入力したコンテンツが表示されます。PHPでこの情報を保持することができましたが、問題は、チェックボックスがオンになっているように見えても、ドロップダウンメニューが有効になっていて、テキストボックスが有効になっていないことです。

どうすればこれを修正できますか?

さて、私はjavascriptだけを使用してこのスクリプトに実行させたいことを持っています。ただし、jQueryを使用してこれを実現する方法を知りたいです。誰か知っていますか?

その間、これがうまく機能している私のコードです:

<?php   //checkbox2.php   header('Content-Type: text/html; charset=UTF-8'); ?> <html> <head> <meta http-equiv="content-language" content="es"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="generator" content="PhpED Version 7.0 (Build 7043)"> <title>checkbox enable disable</title> <meta name="author" content="Pathros Ibarra">
    <!-- Aqu? va la declaraci?n del script enable textbox when checkbox is checked-->    <SCRIPT LANGUAGE="JavaScript">
        function codename() 
        {
            if(document.forma_registro.checkboxname.checked)
            {
                document.forma_registro.grado_otro.disabled=false;
                document.forma_registro.grado.disabled=true;
            }

            else
            {
                document.forma_registro.grado_otro.disabled=true;     //textname
                document.forma_registro.grado.disabled=false;         //box
            }
        }

        //------------------------- en caso de que se haya escrito texto alternativo, entonces apl?quese la siguiente funci?n
        function codename2() 
        {
            if(document.forma_registro.checkboxname2.checked)
            {
                document.forma_registro.grado_otro2.disabled=false;
                document.forma_registro.grado2.disabled=true;
            }

            else
            {
                document.forma_registro.grado_otro2.disabled=true;
                document.forma_registro.grado2.disabled=false;
            }
        }

</SCRIPT> </head> <body> <?php if(empty($_POST)===false) {
    if((isset($_POST['checkboxname2'])===true && $_POST['checkboxname2']=="ON" ))//|| isset($_POST['checkboxname'])===true && $_POST['checkboxname']=="ON")
    {
        //2da forma
        echo '<p style="color: green; font: bold;">Ok in checkbox 2!</p>';
        if(empty($_POST['grado'])===false)
        {
            echo '<p style="color: purple; font: bold;">Se recibió un dato desde el menú y es: "'.$_POST['grado'].'"</p>';
        }
        else if(empty($_POST['grado_otro'])===false)
        {
            echo '<p style="color: purple; font: bold;">Se recibió un dato desde el cuadro de texto alternativo y es: "'.
            $_POST['grado_otro'].'"</p>';
        }
        else
        {
            echo '<p style="color: red; font: bold;">No data received in checkbox 2.</p>';
        } ?> <p style="color: green; text-decoration: blink; font: bold;"></p> <h4 style="color: blue;">Forma de ejemplo con checked</h4> <form action="" name="forma_registro" method="post"> <select name="grado2" <?php if(isset($_POST['grado_otro2'])===false) echo 'disabled="disabled"'; ?>> <!-- disabled="disabled" -->   <option value="">--Seleccione--</option>   <option value="volvo" <?php if(isset($_POST['grado2'])===true && $_POST['grado2']=='volvo') echo 'selected="selected"'; ?>>Volvo</option>   <option value="saab" <?php if(isset($_POST['grado2'])===true && $_POST['grado2']=='saab') echo 'selected="selected"'; ?>>Saab</option>   <option value="mercedes" <?php if(isset($_POST['grado2'])===true && $_POST['grado2']=='mercedes') echo 'selected="selected"'; ?>>Mercedes</option>   <option value="audi" <?php if(isset($_POST['grado2'])===true && $_POST['grado2']=='audi') echo 'selected="selected"'; ?>>Audi</option> </select>                <!-- aquí abajo iba el 2 --> <input type="checkbox" name="checkboxname2" onclick="codename2()" <?php if(isset($_POST['grado_otro'])===true) echo 'value="ON" checked="checked"'; ?>> Seleccionar si otro: <input type="text" name="grado_otro" <?php if(isset($_POST['grado_otro'])===true) echo 'value="'.$_POST['grado_otro'].'"'; ?>><br> <input type="submit" value="enviar">  </form> <?php

    }
    else 
    {
        echo '<p style="color: green; font: bold;">Ok in checkbox 1 uno!</p>';
        if(empty($_POST['grado'])===false)
        {
            echo '<p style="color: green; font: bold;">Se recibió un dato desde el menú y es: "'.$_POST['grado'].'"</p>';
        }
        else if(empty($_POST['grado_otro'])===false)
        {
            echo '<p style="color: green; font: bold;">Se recibió un dato desde el cuadro de texto alternativo y es: "'.
            $_POST['grado_otro'].'"</p>';
        }
        else
        {
            echo '<p style="color: orange; font: bold;">No data received in checkbox 1.</p>';
        }
     ?> <p style="color: green; text-decoration: blink; font: bold;"></p> <h4 style="color: blue;">Forma de ejemplo sin checked</h4> <form action="" name="forma_registro" method="post"> <select name="grado" <?php if(isset($_POST['grado_otro'])===true) echo 'disabled="disabled"'; ?>>   <option value="">--Seleccione--</option>  <option value="volvo" <?php if(isset($_POST['grado'])===true && $_POST['grado']=='volvo') echo 'selected="selected"'; ?>>Volvo</option>   <option value="saab" <?php if(isset($_POST['grado'])===true && $_POST['grado']=='saab') echo 'selected="selected"'; ?>>Saab</option>   <option value="mercedes" <?php if(isset($_POST['grado'])===true && $_POST['grado']=='mercedes') echo 'selected="selected"'; ?>>Mercedes</option>   <option value="audi" <?php if(isset($_POST['grado'])===true && $_POST['grado']=='audi') echo 'selected="selected"'; ?>>Audi</option> </select> <input type="checkbox" name="checkboxname" onclick="codename()" value="ON" <?php if(isset($_POST['grado_otro'])===true) echo 'checked="checked"'; ?>> Seleccionar si otro: <input type="text" name="grado_otro" <?php if(isset($_POST['grado_otro'])===false) echo 'disabled="disabled"'; ?> <?php if(isset($_POST['grado_otro'])===true) echo 'value="'.$_POST['grado_otro'].'"'; ?>><br> <input type="submit" value="enviar">  </form>

<!-- Si la forma del checkbox está en ON, entonces aplicará lo sig: if($_POST['checkboxname2']=="ON" || $_POST['checkboxname']=="ON") y con otra forma y el checkboxname2()  --> <?php
    }//fin del else }//fin del empty post     else {                                     ?> <h4 style="color: blue;">Forma de ejemplo sin checked (inicio)</h4> <form action="" name="forma_registro" method="post"> <select name="grado">   <option value="">--Seleccione--</option>   <option value="volvo" <?php if(isset($_POST['grado'])===true && $_POST['grado']=='volvo') echo 'selected="selected"'; ?>>Volvo</option>   <option value="saab" <?php if(isset($_POST['grado'])===true && $_POST['grado']=='saab') echo 'selected="selected"'; ?>>Saab</option>   <option value="mercedes" <?php if(isset($_POST['grado'])===true && $_POST['grado']=='mercedes') echo 'selected="selected"'; ?>>Mercedes</option>   <option value="audi" <?php if(isset($_POST['grado'])===true && $_POST['grado']=='audi') echo 'selected="selected"'; ?>>Audi</option> </select> <input type="checkbox" name="checkboxname" onclick="codename()" value="ON"> Seleccionar si otro: <input type="text" name="grado_otro" disabled="disabled" <?php if(isset($_POST['grado_otro'])===true) echo 'value="'.$_POST['grado_otro'].'"'; ?>><br> <input type="submit" value="enviar">  </form>

<?php } ?> </body> </html>
4

1 に答える 1

2

これは非常に簡単です。

$('#checkboxname').click(function() {

    if ($(this).is(':checked')) {
        $("#grado_otro").prop("disabled", false);
        $("#grado").prop("disabled", true);
    } else {
        $("#grado_otro").prop("disabled", true);
        $("#grado").prop("disabled", false);
    }
});​

デモはこちら

アップデート

試すことができるもう1つの簡単なバージョンは次のとおりです。

$('#checkboxname').click(function () {
    $("#grado_otro").prop("disabled", !this.checked);
    $("#grado").prop("disabled", this.checked);
});

デモはこちら

于 2012-12-08T14:20:29.553 に答える