select onchange 事件的觸發,selectonchange
做小組內使用的一個簡單工具,其中要實現的一個小功能是當某個下拉式功能表的選擇值改變時觸發另一表單元素的屬性變化。自然的想到使用select表單元素的onchange事件。
下拉式功能表部分的代碼如下:
<select name="type" id="type" disabled="disabled" onchange="setDelType(this)"> <option value="1">1-分區表</option> <option value="2" selected="selected">2-普通表</option></select>
下拉式功能表的值通過JS更改:
...tableType = getTableType(DNS, port, DBName, tableName);if(tableType == 1){ $("#type").val("1");}else if (tableType == 2){ $("#type").val("2");}...結果發現下拉式功能表的值發生變化時setDelType(this)並未被調用。原來,通過JS來改變select的值時不會觸發其onchange事件的。只有通過滑鼠或鍵盤操作,而且選擇的值不同於原始值時才會觸發該事件。若需通過JS改變select的值並觸發onchange事件需要在代碼中顯式的觸發一下。
修改後的代碼如下:
...tableType = getTableType(DNS, port, DBName, tableName);if(tableType == 1){ $("#type").val("1"); $("#type").change();}else if (tableType == 2){ $("#type").val("2"); $("#type").change();}...
或者:
...tableType = getTableType(DNS, port, DBName, tableName);if(tableType == 1){ $("#type").val("1").change();}else if (tableType == 2){ $("#type").val("2").change();}...
select 標籤 onchange事件
在後台擷取時使用select標籤的名稱即可。
比如你的select的name叫:type
則在後台擷取時為:
$_POST["type"];
<select>控制項中,選中第一個值是不會觸發onchange事件的,怎使選中第一值可以觸發事件?
onchange從這個名稱就可以看出,只有在select的選項有改變(change)的時候才會觸發這個事件的。一般情況下select的第一個選項是預設選項,當你選中第一個項時,由於值沒有改變,所以是不會觸發onchange事件的。解決這個問題並沒有什麼完美的辦法,一般你可以增加一個空值的項作為第一選項,比如<option>請選擇</option>,這樣原來的第一項就變成了第二項,點擊該項值就有所改變了,就會觸發onchange事件了;或者把除第一項外的其他項設為預設值,這樣點擊第一項也會觸發事件的。