2012-10-24 126 views
1

我基本上做了兩個下拉菜單,一個決定哪個選擇應該顯示下一個。然後顯示第二個下拉菜單,並從中顯示一個新的表單。我簡化了代碼,但這個想法應該仍然是一樣的。我的問題是,第二個不顯示它應該的代碼。jquery .html()選擇問題

HTML

<select id="change1" on change="changeForm(this.value);"> 
<option> Select Option </option> 
    <option value="c"> Option 1</option> 
    <option value="p"> Option 2</option> 
</select> 
    <div id="form"></div> <div id="changep"></div> 

的Javascript

function changeForm(x) 
{ 
     if(x=='c') 
     { 
     $('#form').html('It Works'); 
     } 

     if(x=='p') 
     { 
     var code = ' <select id="option2" onselect="placeHtml(this.value);"><option>Select Message</option><option value="1m">Message 1</option><option value="2m">Message 2</option></select>'; 
     $('#form').html(code); 
     } 
} 

function placeHtml(x) 
{ 
    if(x=='1m') 
    { 
     $('#changep').html('This will work'); 
    } 

    if(x=='2m') 
    { 
     $('#changep').html('This is a different message'); 
    } 
} 

現在我的問題是,使用第一個下拉菜單時,結果如預期,但使用第二個下拉菜單...沒有什麼變化。如果我使用onchange而不是onselect,那麼在更改選擇後,它只會有一個空白的下拉菜單。我不知道這裏有什麼問題。有人可以幫助我嗎?使用jquery 1.8.2

+0

x從哪裏得到它的價值? – frenchie

+0

我不認爲選擇是你在之後的事件,那裏。它用於文本選擇。 – ThatSteveGuy

回答

0

變化ONSELECT兩個CHANGE1 1和選項來的onchange,它會工作

<select id="change1" onchange="changeForm(this.value);"> 

if(x=='p') 
{ 
    var code = ' <select id="option2" onchange="placeHtml(this.value);"><option>Select Message</option><option value="1m">Message 1</option><option value="2m">Message 2</option></select>'; 
    $('#form').html(code); 
} 

入住這DEMO

+0

你有什麼想法爲什麼[這](http://jsfiddle.net/wHUjR/2/)不起作用? – Trufa

+0

@Trufa是的,因爲在選擇框架中,在第一個下拉菜單中選擇「onload」。如果你把它改成'no wrap(head)',它就會起作用。 –

+0

@Trufa,當選擇onload時,它將代碼包裝在$(window).load中,所以函數在那裏不可用。所以,這是一個範圍問題。 –

0

嘗試更改選擇元素中的onchange選項。

0

改變這一becoz的ONSELECT屬性可以是與...一起使用:

///The onselect attribute can be used with: 
<input type="file">, <input type="password">, <input type="text">, <keygen>, and <textarea>. 

    function changeForm(x) 
    { 
     if(x=='c') 
     { 
     $('#form').html('It Works'); 
     } 
    else if(x=='p') 
     { 
     var code = ' <select id="option2" onchange="placeHtml(this.value);"><option>Select Message</option><option value="1m">Message 1</option><option value="2m">Message 2</option></select>'; 
     $('#form').html(code); 
     } 
    } 

function placeHtml(x) 
{ 
    if(x=='1m') 
    { 
     $('#changep').html('This will work'); 
    } 

    if(x=='2m') 
    { 
     $('#changep').html('This is a different message'); 
    } 
}</script>