J'ai deux entrées de sélection, les deux doivent être sélectionnées avant que le bouton #GO ne s'affiche.

(dbname, user) <--- les deux entrées de sélection, choisissez quelle base de données et choisissez un utilisateur pour accéder à la base de données.

Le problème avec cette requête est qu'après avoir choisi l'un des deux, le bouton #GO s'affichera. Les deux doivent être sélectionnés avant que le #GO ne s'affiche, sinon le bouton #GO se cache.

Le fichier script:

<script type="text/javascript">

$(document).ready(function() {

$("select").on('change',function() {


    var x = $('select[name=name]').val();
    var y = $('select[name=dbname]').val();

    if (x == 0  && y == 0) {
       $("#GO").hide();
    } else if (x == 1  && y == 0) {
        $("#GO").hide();
    } else if (y==0 && x==1) {
        $("#GO").hide();
    }else{
       $("#GO").show();
    }
});

Ce fichier php:

        <?php   echo "<select name='name' id='name'>";
                $res = $conn->query("SELECT user FROM mysql.user");
                    echo    '<option value="0">Select User</option>';
                    while($row = $res->fetch_assoc()) {
                        echo '<option value="' . $row['user'] . '">' . $row['user'] . '</option>'; }
                            echo '</select>';
                echo "<br/>"; 

        ?>

        <br>

        <?php   echo "<select name='dbname' id='dbname'>";
                $res = $conn->query("show databases");
                    echo    '<option value="0">Select Database</option>';
                    while($row = $res->fetch_assoc()) {
                        echo '<option value="' . $row['Database'] . '">' . $row['Database'] . '</option>'; }
                            echo '</select>';
                echo "<br/>"; 

        ?><br>


                <input type="submit" name="GO" value="GO" id="GO" class="GO">
0
user5789297 7 août 2016 à 19:10

4 réponses

Meilleure réponse

Ce que vous voulez, c'est utiliser "||" ce qui signifie "OU", au lieu de "&&" qui signifie "ET".

Dans ce cas, si l'un d'eux vaut 0, il sera masqué.

if (x == 0  || y == 0) {
  $("#GO").hide();
}else{
  $("#GO").show();
}

Vous pouvez également le faire comme ceci:

//It checks whether both x and y are Not 0, if true, shows "#GO", else, stays hidden.

if (x != 0  && y != 0) {
  $("#GO").show();
}else{
  $("#GO").hide();
}
0
user2267175 7 août 2016 à 16:22

Ici if (x == 0 && y == 0), la condition indique masquer le bouton #GO si et seulement si les deux ne sont pas sélectionnés. Mais vous devriez vérifier si l'un d'eux n'est pas sélectionné, puis masquer le bouton. La condition doit donc être if (x == 0 || y == 0), ce qui signifie qu'aucun des deux n'est sélectionné.

Encore,

else if (x == 1  && y == 0) {
    $("#GO").hide();
} else if (y==0 && x==1) {
    $("#GO").hide();

Il n'y a aucune différence entre ces deux conditions ci-dessus.

Voici ce que tu veux

$(document).ready(function() {
    $("select").on('change',function() {
        var x = $('select[name=name]').val();
        var y = $('select[name=dbname]').val();

        if (x == 0  ||y == 0) {
           $("#GO").hide();
        }else{
           $("#GO").show();
        }
    });
});

Ce sera suffisant pour réaliser ce que vous voulez faire

0
jonju 7 août 2016 à 16:22

Vous pouvez essayer de cette façon,

$(document).ready(function() {

  var GO = $('#GO');
  var dbname = $('#dbname');
  var name = $('#name');

  GO.attr('disabled', 'disabled'); //initially disabled

  function EnableDisableGo() {

    if (verifySelect()) {
        GO.attr('disabled', '');
    } else {
        GO.attr('disabled', 'disabled');
    }
  }

  function verifySelect() {
    if (dbname.val() != '' && name.val() != '') { //if both selected
        return true;
    } else {
        return false
    }
  }

 dbname.change(EnableDisableGo);

 name.change(EnableDisableGo);


});
0
Always Sunny 7 août 2016 à 16:27

Il existe des moyens plus faciles de le faire, avec un filtre et une bascule

$(document).ready(function() {
    $("select").on('change',function() {
        $('#GO').toggle(
            $('#name, #dbname').filter(function() {
                return this.value === $('option',this).first().val();
            }).length === 0
        );
    }).trigger('change')
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name='name' id='name'>";
    <option value="0">Select User</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
</select>
<br/><br/>
<select name='dbname' id='dbname'>
    <option value="0">Select Database</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
</select>
<br/><br/>
<input type="submit" name="GO" value="GO" id="GO" class="GO">
0
adeneo 7 août 2016 à 16:29