[英]How can I put the selected option of a <select> from a dynamically generated form into an input field
[英]HTML select form - how to trigger “dynamically generated option”
我有一個HTML表單以及一個腳本,該腳本會自動觸發默認的“選項”(選項值進行硬編碼)。
我還有一個獨立的腳本,該腳本根據MySQL中的特定列值動態創建“選項”的選擇。
問題:從動態生成的列表中的下拉列表中進行選擇時,它不會“觸發”任何內容(在這種情況下,也無需手動或自動,手動就可以了)
自動觸發默認“選項”的形式:
<form>
<select name="fruit" onchange="showFruit(this.value)">
<option>Choice:</option>
<option value="1">Yellow Fruit</option>
<option value="2">Red Fruit</option>
</select>
</form>
<script>
window.onload = function () {
var el = document.getElementsByName('fruit')[0];
el.value = 1; //Set default value
el.onchange(); //trigger onchange event
}
function showFruit(val) {
alert(val);
}
</script>
以及從特定的MySQL列生成動態創建的“選項”列表的代碼:
<? $connect = mysqli_connect('localhost', '*', '*', '*');
$sql="SELECT DISTINCT(fruit_name) AS fruit_name FROM fruit ORDER BY fruit_name ASC";
$result = mysqli_query($connect, $sql);
if(mysqli_num_rows($result) > 0){
$select= '<select name="select">';
while($rs = mysqli_fetch_array($result)){
$select.='<option value="'.$rs['id'].'">'.$rs['fruit_name'].'</option>';
}
}
$select.='</select>';
echo $select;
如何使onload函數附加到動態生成的“選項”列表? 我根本不需要任何硬編碼的“選項”。 只是動態生成的一個。 當我從列表中選擇時,我希望獲得各種響應/反應。
為了清楚起見,我可能會將它們分開,並將模板文件包含到邏輯文件中,該文件負責格式化頁面數據。 通過選擇條件后面的選擇菜單,可以確保它僅在有數據要放入時才呈現。
我以一種特殊的方式對此進行了格式化,您無需遵循,但選擇一致的樣式並始終堅持使用是相當不錯的做法。 我還將您對mysqli類的用法更新為面向對象的方法。 請注意,在這種情況下,使用Mysqli->query
時不容易受到sql注入的攻擊,但是如果您打算接受用戶輸入,則應研究准備好的語句以防止sql注入 。
實際上,我在模板文件中使用<?= ?>
運算符,這是<?php echo '';?>
的簡寫,使用<?
不建議您使用php文件打開器<?php
是標准的。
PHP還允許短的開放標記
<?
(不鼓勵這樣做,因為只有在使用short_open_tag php.ini配置文件指令啟用此功能時,或者如果使用--enable-short-tags選項配置了PHP,該功能才可用)。
當混合使用PHP和HTML時,通常更清楚(選擇!),並在可能的情況下使用替代if和loop語法( <?php if () : ?> <?php endif; ?>
而不是<?php if () { ?> <?php } ?>
<?php
// page.php
$display = false;
$mysqli = new mysqli(HOST, USER, PASSWORD, SCHEMA);
$sql = "SELECT DISTINCT(fruit_name) AS fruit_name FROM fruit ORDER BY fruit_color ASC";
$result = mysqli->query($sql);
// not sure this is necessary in this particular case, but
if ($result->num_rows > 0) {
$display = true;
$select = []
while ($row = $result->fetch_assoc()) {
$select[] = "<option value=\"{$row['id']}\">{$row['fruit_name']}</option>";
}
}
include 'htmlfile.php';
?>
<!-- htmlfile.php -->
<form>
<?php if ($display) : ?>
<select name="select">
<?= implode('', $select) ?>
</select>
<?php endif; ?>
</form>
<script>
window.onload = function () {
var el = document.getElementsByName('fruit')[0];
el.value = 1; //Set default value
el.onchange(); //trigger onchange event
}
function showFruit(val) {
alert(val);
}
</script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.