ti-enxame.com

Passando valor do formulário usando o Ajax

Referindo-me à minha pergunta anterior jQuery Ajax para três suspenso

Na página1)

Selecionarei Edifício suspenso (preenchendo a partir de db) e Piso suspenso (por chamada do Ajax)

então o URL passará como: index.php? option = com_rsform & formId = 8 & form [Building] [] = 1 & form [Floor] [] = 3

Na página2)

No edifício suspenso, mostrando a opção com o valor 1 , mas o piso suspenso mostra apenas "por favor selecione" e [~ # ~] não [~ # ~] obtendo o valor (que deve ser 3 )

Assim, no script, eu tenho que escrever a instrução if SOMENTE para o piso, como se o piso obtesse valor da url e mostre o valor, execute o script para chamar ajax para o piso. As unidades nos dois casos (continuar em outro formulário ou iniciar de novo por página do formulário) receberão valor pela chamada do Ajax.

aqui está o código:

jQuery(document).ready(function($) {

var Floor_id    = $('#Floor');
var Building_id = $('#Building');
var Unit_id     = $('#Unit');
var initial_Floor_html = '<option value="">Please select...</option>';
var initial_Unit_html  = '<option value="">Please select...</option>';

Floor_id.html(initial_Floor_html);
Unit_id.html(initial_Unit_html);

Building_id.on('change', function(e) {

    var selectvalue = $(this).val();

    //Display 'loading' status in the target select list
    Floor_id.html('<option value="">Loading...</option>');

    if (selectvalue == '') 
    {
        Floor_id.html(initial_Floor_html);
    } 
    else 
    {
        //Make AJAX request, using the selected value as the GET
        $.ajax({
            url: 'index.php',
            data:'option=com_parkingreservation&task=getFloorsHTML&fvalue='+selectvalue,
            success: function(output) {
                Floor_id.html(output);
                updateSelect(Floor_id.val());
            },
            error: function (xhr, ajaxOptions, thrownError) {
                alert(xhr.status +  ' ' + thrownError);
            }
        });
    }
});

Floor_id.on('change', function(e) {
    updateSelect($(this).val());
});

function updateSelect(selectvalue) 
{
    //Display 'loading' status in the target select list
    Unit_id.html('<option value="">Loading...</option>');

    if (selectvalue == '') 
    {
        Unit_id.html(initial_Unit_html);
    } 
    else 
    {
        //Make AJAX request, using the selected value as the GET
        $.ajax({
            url: 'index.php',
            data:'option=com_parkingreservation&task=getUnitsHTML&uvalue='+selectvalue,
            success: function(output) {
                Unit_id.html(output);
            },
            error: function (xhr, ajaxOptions, thrownError) {
                alert(xhr.status + ' ' + thrownError);
            }
        });
    }
}

});
1
allogos

Como você possui o edifício e o piso, ambos na URL, basta adicionar uma instrução if ao menu suspenso do piso para adicionar selected = "selected" à opção correta.

Apenas como uma observação, se o menu suspenso estiver apenas selecionando um único edifício ou andar, não há necessidade de passar esses dados como uma matriz, apenas passe-os como um único inteiro. Este exemplo de código seria baseado na passagem de um único número inteiro em vez de uma matriz.

<?php
$JInput = JFactory::getApplication()->input;
$building = $JInput->get('building','','int');
$floor = $JInput->get('floor','','int');
?>

<select name="bulding">
<option value="1" <?php echo (($building== 1)?'echo 'selected="selected"':'');?>>Building 1</option>
<option value="2" <?php echo (($building== 2)?'echo 'selected="selected"':'');?>>Building 2</option>
<option value="3" <?php echo (($building== 3)?'echo 'selected="selected"':'');?>>Building 3</option>
</select>

<select name="floor">
<option value="1" <?php echo (($floor == 1)?'echo 'selected="selected"':'');?>>Building 1</option>
<option value="2" <?php echo (($floor == 2)?'echo 'selected="selected"':'');?>>Building 2</option>
<option value="3" <?php echo (($floor == 3)?'echo 'selected="selected"':'');?>>Building 3</option>
</select>

Para o terceiro menu suspenso, você pode usar o valor da sua variável de piso para fazer uma chamada ajax no seu banco de dados e obter qualquer resultado para o terceiro menu suspenso; em seguida, defina o valor do terceiro menu suspenso para esse resultado.

1
Terry Carter