Javascript 在选择选项更改时更新文本输入(两者最初都是从数据库填充的)

Javascript 在选择选项更改时更新文本输入(两者最初都是从数据库填充的),javascript,php,jquery,Javascript,Php,Jquery,从数据库填充一个下拉选择框,所选选项与当前页面上的变量$comp\u cntry匹配: <select name="country"> <option value="--" disabled>Please Select...</option> <option value="--" disabled>- - - - -</option> <?php // Populate Country Dropdo

从数据库填充一个下拉选择框,所选选项与当前页面上的变量
$comp\u cntry
匹配:

<select name="country">
    <option value="--" disabled>Please Select...</option>
    <option value="--" disabled>- - - - -</option>
    <?php
    // Populate Country Dropdown
    $country_query = mysql_query("SELECT country_name FROM ukipdata.ukip_countries
        ORDER BY country_name ASC");
    while ($cq = mysql_fetch_assoc($country_query)) {
        $country = $cq['country_name'];
        // Select Current Country
        if ($country == $comp_cntry) {
            ?>
            <option value"<?=$country?>" selected><?=$country?></option>
            <?php
        }
        else {
            ?>
            <option value"<?=$country?>"><?=$country?></option>
            <?php
        }
    }
    ?>
</select>

请选择。。。
- - - - -

我认为最好的方法是将两个PHP代码连接起来,如下所示:

<select name="country">
    <option value="--" disabled>Please Select...</option>
    <option value="--" disabled>- - - - -</option>
    <?php
    // Populate Country Dropdown
    $country_query = mysql_query("SELECT country_name, dialling_code FROM ukipdata.ukip_countries ORDER BY country_name ASC");
    while ($cq = mysql_fetch_assoc($country_query)) {
        $country = $cq['country_name'];
        $prefix = $cq['dialling_code'];

        // Select Current Country
        echo "<option data-prefix='{$prefix}' value='{$country}' ";
        if($country == $comp_cntry) echo "selected";
        echo ">{$country}</option>";
    }
    ?>
</select>

<input type="text" name="telephone_prefix" value="" readonly>
$country_to_phone_prefix_map = array(
    'country name A' => 'phone prefix A',
    'country name B' => 'phone prefix B',
    ...
);
这将产生以下效果:


我希望这就是您所需要的。

我想说,最好的方法是像这样连接两个PHP代码:

<select name="country">
    <option value="--" disabled>Please Select...</option>
    <option value="--" disabled>- - - - -</option>
    <?php
    // Populate Country Dropdown
    $country_query = mysql_query("SELECT country_name, dialling_code FROM ukipdata.ukip_countries ORDER BY country_name ASC");
    while ($cq = mysql_fetch_assoc($country_query)) {
        $country = $cq['country_name'];
        $prefix = $cq['dialling_code'];

        // Select Current Country
        echo "<option data-prefix='{$prefix}' value='{$country}' ";
        if($country == $comp_cntry) echo "selected";
        echo ">{$country}</option>";
    }
    ?>
</select>

<input type="text" name="telephone_prefix" value="" readonly>
$country_to_phone_prefix_map = array(
    'country name A' => 'phone prefix A',
    'country name B' => 'phone prefix B',
    ...
);
这将产生以下效果:


我希望这就是您所需要的。

我想说,最好的方法是像这样连接两个PHP代码:

<select name="country">
    <option value="--" disabled>Please Select...</option>
    <option value="--" disabled>- - - - -</option>
    <?php
    // Populate Country Dropdown
    $country_query = mysql_query("SELECT country_name, dialling_code FROM ukipdata.ukip_countries ORDER BY country_name ASC");
    while ($cq = mysql_fetch_assoc($country_query)) {
        $country = $cq['country_name'];
        $prefix = $cq['dialling_code'];

        // Select Current Country
        echo "<option data-prefix='{$prefix}' value='{$country}' ";
        if($country == $comp_cntry) echo "selected";
        echo ">{$country}</option>";
    }
    ?>
</select>

<input type="text" name="telephone_prefix" value="" readonly>
$country_to_phone_prefix_map = array(
    'country name A' => 'phone prefix A',
    'country name B' => 'phone prefix B',
    ...
);
这将产生以下效果:


我希望这就是您所需要的。

我想说,最好的方法是像这样连接两个PHP代码:

<select name="country">
    <option value="--" disabled>Please Select...</option>
    <option value="--" disabled>- - - - -</option>
    <?php
    // Populate Country Dropdown
    $country_query = mysql_query("SELECT country_name, dialling_code FROM ukipdata.ukip_countries ORDER BY country_name ASC");
    while ($cq = mysql_fetch_assoc($country_query)) {
        $country = $cq['country_name'];
        $prefix = $cq['dialling_code'];

        // Select Current Country
        echo "<option data-prefix='{$prefix}' value='{$country}' ";
        if($country == $comp_cntry) echo "selected";
        echo ">{$country}</option>";
    }
    ?>
</select>

<input type="text" name="telephone_prefix" value="" readonly>
$country_to_phone_prefix_map = array(
    'country name A' => 'phone prefix A',
    'country name B' => 'phone prefix B',
    ...
);
这将产生以下效果:


我希望这就是您所需要的。

我将向元素添加一个数据属性(这里可能称为数据前缀),如

<option value='country' data-prefix='+44'/>

这将相应地更新值。

我将向元素添加一个数据属性(这里可能称为数据前缀),如

<option value='country' data-prefix='+44'/>

这将相应地更新值。

我将向元素添加一个数据属性(这里可能称为数据前缀),如

<option value='country' data-prefix='+44'/>

这将相应地更新值。

我将向元素添加一个数据属性(这里可能称为数据前缀),如

<option value='country' data-prefix='+44'/>

这将相应地更新值。

只需将前缀作为选择选项的属性传递:

<select id="country-select" name="country">
    <option value="--" disabled>Please Select...</option>
    <option value="--" disabled>- - - - -</option>
    <?php
    // Populate Country Dropdown
    $country_query = mysql_query("SELECT country_name, dialling_code FROM ukipdata.ukip_countries
        ORDER BY country_name ASC");
    while ($cq = mysql_fetch_assoc($country_query)) {
        $country = $cq['country_name'];
        $prefix = $tq['dialling_code'];
        // Select Current Country
        if ($country == $comp_cntry) {
            ?>
            <option value"<?=$country?>" prefix="<?=$prefix?>" selected><?=$country?></option>
            <?php
        }
        else {
            ?>
            <option value"<?=$country?>"><?=$country?></option>
            <?php
        }
    }
    ?>
</select>

<input id="prefix-input" type="text" name="telephone_prefix" value="" readonly>

只需将前缀作为选择选项的属性传递:

<select id="country-select" name="country">
    <option value="--" disabled>Please Select...</option>
    <option value="--" disabled>- - - - -</option>
    <?php
    // Populate Country Dropdown
    $country_query = mysql_query("SELECT country_name, dialling_code FROM ukipdata.ukip_countries
        ORDER BY country_name ASC");
    while ($cq = mysql_fetch_assoc($country_query)) {
        $country = $cq['country_name'];
        $prefix = $tq['dialling_code'];
        // Select Current Country
        if ($country == $comp_cntry) {
            ?>
            <option value"<?=$country?>" prefix="<?=$prefix?>" selected><?=$country?></option>
            <?php
        }
        else {
            ?>
            <option value"<?=$country?>"><?=$country?></option>
            <?php
        }
    }
    ?>
</select>

<input id="prefix-input" type="text" name="telephone_prefix" value="" readonly>

只需将前缀作为选择选项的属性传递:

<select id="country-select" name="country">
    <option value="--" disabled>Please Select...</option>
    <option value="--" disabled>- - - - -</option>
    <?php
    // Populate Country Dropdown
    $country_query = mysql_query("SELECT country_name, dialling_code FROM ukipdata.ukip_countries
        ORDER BY country_name ASC");
    while ($cq = mysql_fetch_assoc($country_query)) {
        $country = $cq['country_name'];
        $prefix = $tq['dialling_code'];
        // Select Current Country
        if ($country == $comp_cntry) {
            ?>
            <option value"<?=$country?>" prefix="<?=$prefix?>" selected><?=$country?></option>
            <?php
        }
        else {
            ?>
            <option value"<?=$country?>"><?=$country?></option>
            <?php
        }
    }
    ?>
</select>

<input id="prefix-input" type="text" name="telephone_prefix" value="" readonly>

只需将前缀作为选择选项的属性传递:

<select id="country-select" name="country">
    <option value="--" disabled>Please Select...</option>
    <option value="--" disabled>- - - - -</option>
    <?php
    // Populate Country Dropdown
    $country_query = mysql_query("SELECT country_name, dialling_code FROM ukipdata.ukip_countries
        ORDER BY country_name ASC");
    while ($cq = mysql_fetch_assoc($country_query)) {
        $country = $cq['country_name'];
        $prefix = $tq['dialling_code'];
        // Select Current Country
        if ($country == $comp_cntry) {
            ?>
            <option value"<?=$country?>" prefix="<?=$prefix?>" selected><?=$country?></option>
            <?php
        }
        else {
            ?>
            <option value"<?=$country?>"><?=$country?></option>
            <?php
        }
    }
    ?>
</select>

<input id="prefix-input" type="text" name="telephone_prefix" value="" readonly>

我的建议是保存一个javascript对象,该对象将国家映射到电话代码,因此当您的国家选择发生更改时,您可以通过javascript触发对电话前缀的更改

因此,我们假设您在javascript中有一个映射(关联数组),如下所示:

<select name="country">
    <option value="--" disabled>Please Select...</option>
    <option value="--" disabled>- - - - -</option>
    <?php
    // Populate Country Dropdown
    $country_query = mysql_query("SELECT country_name, dialling_code FROM ukipdata.ukip_countries ORDER BY country_name ASC");
    while ($cq = mysql_fetch_assoc($country_query)) {
        $country = $cq['country_name'];
        $prefix = $cq['dialling_code'];

        // Select Current Country
        echo "<option data-prefix='{$prefix}' value='{$country}' ";
        if($country == $comp_cntry) echo "selected";
        echo ">{$country}</option>";
    }
    ?>
</select>

<input type="text" name="telephone_prefix" value="" readonly>
$country_to_phone_prefix_map = array(
    'country name A' => 'phone prefix A',
    'country name B' => 'phone prefix B',
    ...
);
这可以在查询while循环中生成:

$country_to_phone_prefix_map = array();
while ($tq = mysql_fetch_assoc($telephone_query)) {
    $country_to_phone_prefix_map[$tq['country_name']] = $tq['dialing_code'];
}
然后在呈现页面时,将此映射注入javascript

<script type="text/javascript">
var countryToPhonePrefixMap = <?php echo json_encode($country_to_phone_prefix_map); ?>;
</script>

我的建议是保存一个javascript对象,该对象将国家映射到电话代码,因此当您的国家选择发生更改时,您可以通过javascript触发对电话前缀的更改

因此,我们假设您在javascript中有一个映射(关联数组),如下所示:

<select name="country">
    <option value="--" disabled>Please Select...</option>
    <option value="--" disabled>- - - - -</option>
    <?php
    // Populate Country Dropdown
    $country_query = mysql_query("SELECT country_name, dialling_code FROM ukipdata.ukip_countries ORDER BY country_name ASC");
    while ($cq = mysql_fetch_assoc($country_query)) {
        $country = $cq['country_name'];
        $prefix = $cq['dialling_code'];

        // Select Current Country
        echo "<option data-prefix='{$prefix}' value='{$country}' ";
        if($country == $comp_cntry) echo "selected";
        echo ">{$country}</option>";
    }
    ?>
</select>

<input type="text" name="telephone_prefix" value="" readonly>
$country_to_phone_prefix_map = array(
    'country name A' => 'phone prefix A',
    'country name B' => 'phone prefix B',
    ...
);
这可以在查询while循环中生成:

$country_to_phone_prefix_map = array();
while ($tq = mysql_fetch_assoc($telephone_query)) {
    $country_to_phone_prefix_map[$tq['country_name']] = $tq['dialing_code'];
}
然后在呈现页面时,将此映射注入javascript

<script type="text/javascript">
var countryToPhonePrefixMap = <?php echo json_encode($country_to_phone_prefix_map); ?>;
</script>

我的建议是保存一个javascript对象,该对象将国家映射到电话代码,因此当您的国家选择发生更改时,您可以通过javascript触发对电话前缀的更改

因此,我们假设您在javascript中有一个映射(关联数组),如下所示:

<select name="country">
    <option value="--" disabled>Please Select...</option>
    <option value="--" disabled>- - - - -</option>
    <?php
    // Populate Country Dropdown
    $country_query = mysql_query("SELECT country_name, dialling_code FROM ukipdata.ukip_countries ORDER BY country_name ASC");
    while ($cq = mysql_fetch_assoc($country_query)) {
        $country = $cq['country_name'];
        $prefix = $cq['dialling_code'];

        // Select Current Country
        echo "<option data-prefix='{$prefix}' value='{$country}' ";
        if($country == $comp_cntry) echo "selected";
        echo ">{$country}</option>";
    }
    ?>
</select>

<input type="text" name="telephone_prefix" value="" readonly>
$country_to_phone_prefix_map = array(
    'country name A' => 'phone prefix A',
    'country name B' => 'phone prefix B',
    ...
);
这可以在查询while循环中生成:

$country_to_phone_prefix_map = array();
while ($tq = mysql_fetch_assoc($telephone_query)) {
    $country_to_phone_prefix_map[$tq['country_name']] = $tq['dialing_code'];
}
然后在呈现页面时,将此映射注入javascript

<script type="text/javascript">
var countryToPhonePrefixMap = <?php echo json_encode($country_to_phone_prefix_map); ?>;
</script>

我的建议是保存一个javascript对象,该对象将国家映射到电话代码,因此当您的国家选择发生更改时,您可以通过javascript触发对电话前缀的更改

因此,我们假设您在javascript中有一个映射(关联数组),如下所示:

<select name="country">
    <option value="--" disabled>Please Select...</option>
    <option value="--" disabled>- - - - -</option>
    <?php
    // Populate Country Dropdown
    $country_query = mysql_query("SELECT country_name, dialling_code FROM ukipdata.ukip_countries ORDER BY country_name ASC");
    while ($cq = mysql_fetch_assoc($country_query)) {
        $country = $cq['country_name'];
        $prefix = $cq['dialling_code'];

        // Select Current Country
        echo "<option data-prefix='{$prefix}' value='{$country}' ";
        if($country == $comp_cntry) echo "selected";
        echo ">{$country}</option>";
    }
    ?>
</select>

<input type="text" name="telephone_prefix" value="" readonly>
$country_to_phone_prefix_map = array(
    'country name A' => 'phone prefix A',
    'country name B' => 'phone prefix B',
    ...
);
这可以在查询while循环中生成:

$country_to_phone_prefix_map = array();
while ($tq = mysql_fetch_assoc($telephone_query)) {
    $country_to_phone_prefix_map[$tq['country_name']] = $tq['dialing_code'];
}
然后在呈现页面时,将此映射注入javascript

<script type="text/javascript">
var countryToPhonePrefixMap = <?php echo json_encode($country_to_phone_prefix_map); ?>;
</script>

这是我第一次使用的最全面的解决方案,无需编辑代码,因此我将其标记为正确。所有其他使用相同解决方案的答案,我有+1'd。非常感谢。从未使用过数据属性,但在代码(即引导)中见过它们,了解一下如何使用它们是很好的。这是我第一次使用的最全面的解决方案,无需编辑代码,因此我将其标记为正确。所有其他使用相同解决方案的答案,我有+1'd。非常感谢。从未使用过数据属性,但在代码(即引导)中见过它们,了解一下如何使用它们是很好的。这是我第一次使用的最全面的解决方案,无需编辑代码,因此我将其标记为正确。所有其他使用相同解决方案的答案,我有+1'd。非常感谢。从未使用过数据属性,但在代码(即引导)中见过它们,了解一下如何使用它们是很好的。这是我第一次使用的最全面的解决方案,无需编辑代码,因此我将其标记为正确。所有其他使用相同解决方案的答案,我有+1'd。非常感谢。从未使用过数据属性,但在代码中见过它们(即引导),了解一下如何使用它们是很好的。