2012-01-27 141 views
3

時,事件不會觸發在我的下拉列表中,我將其設置爲onchange應調用checkval並傳入元素的id。我剛剛開始使用真正的基本登錄,但甚至無法顯示警報。我究竟做錯了什麼?當下拉列表的OnChange調用

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>Untitled Document</title> 
<script> 
function checkval(id){ 
    if($('#' + id).val == "Other") 
    { 
     alert("You Selected Other"); 
     //other logic will go here 
    } 
} 
</script> 
</head> 

<body> 
<select name="items1[]" id="items1[]" onchange="checkval(id);"> 
    <option selected value="">Select One</option> 
    <option value="one">One</option> 
    <option value="Other">Other</option> 
    </select> 

<select name="items2[]" id="items2[]" onchange="checkval(id);"> 
    <option selected value="">Select One</option> 
    <option value="one">One</option> 
    <option value="Other">Other</option> 
    </select> 
</body> 
</html> 

回答

2

編輯:似乎它失敗了id項目1 [] ..所以改變了你的標記位..修正了jsFiddle這裏。

見鏈接What characters are allowed in DOM IDs?

更改您的標記爲onchange="checkval(this.id);"

和腳本

function checkval(id){ 
    if($('#' + id).val() == "Other") 
    { 
     alert("You Selected Other"); 
     //other logic will go here 
    } 
} 
0

你應該叫VAL用括號像這樣:

function checkval(id){ 
    if($('#' + id).val() == "Other") 
    { 
     alert("You Selected Other"); 
     //other logic will go here 
    } 
} 

按規定SKS,你也有一個錯誤的onchange事件,它應該是this.id.但是,您應該更改代碼以使其更容易一些。

平變化:

<select name="items1[]" id="items1[]" onchange="checkval(this);"> 

而且你的函數:

function checkval(el){ 
    if($(el).val() == "Other") 
    { 
     alert("You Selected Other"); 
     //other logic will go here 
    } 
} 

另外,你在控制檯中的任何錯誤?

2

試試這個:

<select name="items1[]" id="items1[]" onchange="checkval(this.id);"> 

甚至更​​好,線材你悄悄地處理,

$(document).ready(function(){ 
    $(".items").change(function(){ 
     checkval(this.id); 
    }); 
}); 

和刪除的onchange屬性,並添加等級:

<select name="items1" id="items1" class="items"> 
    <option selected value="">Select One</option> 
    <option value="one">One</option> 
    <option value="Other">Other</option> 
    </select> 

<select name="items2" id="items2" class="items"> 
    <option selected value="">Select One</option> 
    <option value="one">One</option> 
    <option value="Other">Other</option> 
    </select> 
+0

正如其他人所指出的,不要忘了'.VAL括號()''中checkval()'。 – jrummell 2012-01-27 20:56:34

0

$('#' + id).val是一個函數。
該功能永遠不會等於"Other"

您可能想要使用括號調用函數。

1

val是一個函數,所以使用它作爲函數val()將工作。

原則上,您可以將選定的值本身傳遞給chectVal方法。

標記變化。

<select name="items1[]" id="items1[]" onchange="checkval(this.value);"> 
<select name="items2[]" id="items2[]" onchange="checkval(this.value);"> 

JS

function checkval(value){ 
    if(value == "Other") 
    { 
     alert("You Selected Other"); 
     //other logic will go here 
    } 
}