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);
    }
});​

在这里演示

更新

这是您可以尝试的另一个简单版本:

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

在这里演示

于 2012-12-08T14:20:29.553 回答