Поля ввода Concat php, которые заполняются раскрывающимся списком mysql - PullRequest
0 голосов
/ 12 мая 2018

Я пытаюсь объединить поля ввода города, штата и почтового индекса, которые автоматически заполняются, когда пользователь делает выбор из выпадающего списка клиента и вызывает изменение адресной строки (автоматическое заполнение).

Я перепробовал все предложения, сделанные в следующих постах, но ни одно из них не сработало, так как ни один из них не получил «принятого» ответа:

Объединение нескольких текстовых вводов HTML ссохраненная переменная , Объединить два текстовых поля в html и Как объединить строки из входных данных с помощью JavaScript?

Это мой текущий код, который отображает вводполе, но ни одно из значений не отображается в нем.Когда мне это удастся, я намерен «спрятать» город, штат и почтовые индексы, чтобы на странице отображалась только каскадная строка ввода.

echo '<input style="float:left; margin-left:182px; margin-top:-6px; border:0px; background:none; box-shadow:none;" type="text" id="city" name="city" readonly="readonly" value="">';
            echo '<input style="float:left; border:0px; margin-top:-6px; background:none; box-shadow:none;" type="text" id="state" name="state" readonly="readonly" value="">';
            echo '<input style="float:left; border:0px; margin-top:-6px; background:none; box-shadow:none;" type="text" id="zip" name="zip" readonly="readonly" value="">';
            echo '<input type="text" id="custAdd" name="custAdd">';


<script>
   $("custAdd").change(function(){
    document.getElementById('custAdd').value = 
    document.getElementById('city').value + ', ' + 
    document.getElementById('state').value + ' ' + 
    document.getElementById('zip').value;
 };
</script>

Заранее спасибо за ваше время и любые советыВы можете предоставить.

Ответы [ 3 ]

0 голосов
/ 13 мая 2018

Судя по обсуждению в комментариях, кажется, что вы хотите обновить комбинированное поле при изменении одного из других, не имеет значения, какое из них. Итак:

$("#city").change(function(){

Или #state или #zip, это не должно иметь значения.

0 голосов
/ 15 мая 2018

После помощи @Greg Schmidt и нескольких часов тестирования различных сценариев я смог объединить поля ввода города, штата и почтового индекса.Проблема заключалась в том, что, поскольку поле ввода адреса также заполнялось автоматически, оно не вызывало событие onchange.В конечном итоге сработало добавление concat-кода в код onchange для поля select.Вот рабочий код:

PHP:

$ddlquery2 = "SELECT * FROM everyone WHERE rolename='Customer' ORDER BY first_name ASC";
        $ddlresult2 = mysqli_query($dbc, $ddlquery2) or die("Bad SQL: $ddlquery2");
        echo 'Customer (select one): <select type="text" class="dropdown" name="custid" id="customerID" size="1" onchange="popaddress()">';
        echo '<option value=""></option>';
        while($ddlrow2=mysqli_fetch_array($ddlresult2, MYSQLI_ASSOC)){
        echo "<option value='".$ddlrow2['id']."'  data-address='".$ddlrow2['address']."' data-city='".$ddlrow2['city']."' data-state='".$ddlrow2['state']."'  data-zip='".$ddlrow2['zip']."'>" . $ddlrow2['first_name'] .' ' .$ddlrow2['last_name']. "</option>";
        } //End while statement
        echo "</select>";
        echo '<br>';
        echo '<input style="float:left; margin-left:185px; margin-top:3px; border:0px; background:none; box-shadow:none;" type="text" id="custaddress" name="address" readonly="readonly" value="" onchange="concatloc()">';
        echo "<br >";

        echo '<input style="float:left; margin-left:185px; margin-top:-7px; border:0px; background:none; box-shadow:none;" type="text" id="custAdd" readonly="readonly" value="">';
        echo '<input type="hidden" id="custcity" name="city" value="">';
        echo '<input type="hidden" id="custstate" name="state" value="">';
        echo '<input type="hidden" id="custzip" name="zip" value="">';

JQUERY:

<script>
$('#customerID').change(function() {
    selectedOption = $('option:selected', this);
    $('input[id=custaddress]').val( selectedOption.data('address') );
    $('input[id=custcity]').val( selectedOption.data('city') );
    $('input[id=custstate]').val( selectedOption.data('state') );
    $('input[id=custzip]').val( selectedOption.data('zip') );

    document.getElementById('custAdd').value = 
    document.getElementById('custcity').value + ', ' + 
    document.getElementById('custstate').value + ' ' + 
    document.getElementById('custzip').value;
 });
</script>

Надеюсь, это поможет кому-то другому, пытающемуся объединить поля ввода.Еще один совет ... будьте осторожны при копировании и вставке кода даже в пределах одного файла.Когда я первоначально установил исходные вводы города, штата и почтового индекса на type = "hidden", они все еще появлялись на странице.Мне пришлось вручную набирать эти строки, чтобы «скрытая» команда работала.

0 голосов
/ 12 мая 2018

Вам также не хватает закрывающих скобок) в конце функции изменения

...