2013-05-07 72 views
1

我有下面jQuery腳本Jquery的不顯示錶單字段

<script> 
$(document).ready(function(){ 
    $('#bashing_title').change(function(){ 
     $(".selectInput").hide(); 
     $("#"this.value).show(); 
    }); 
}); 

</script> 

它是假設當選擇一個下拉顯示錶單字段。但不是。我猜它可能是因爲生成的HTML是

<option value="Title 1" value="1">Title 1</option> 

但是,如果我改變abover jQuery代碼這個

<script> 
$(document).ready(function(){ 
    $('#bashing_title').change(function(){ 
     $(".selectInput").hide(); 
     $("#1").show(); 
    }); 
}); 

</script> 

它的工作原理。 但我有大約10個不同的選項ID。我如何解決它?

我希望我做的意義

回答

2

變化

$("#"this.value).show(); 

$("#"+this.value).show(); 

並刪除重複value屬性,那就是改變

<option value="Title 1" value="1">Title 1</option> 

<option value="1">Title 1</option> 
+0

最新的區別是什麼? – psharma 2013-05-07 17:55:22

+0

好吧,有一個'+'。這從語法錯誤更改爲字符串連接。 – 2013-05-07 17:55:35

+0

正確,但它仍然無法正常工作。 – psharma 2013-05-07 17:56:51

1

你應該寫。

$("#"+this.value).show(); 
+0

是的,但它不工作。它沒有顯示文本字段。我假設它與整數和字符串值有關。 – psharma 2013-05-07 17:55:56

1

將其更改爲 $( 「#」 + THIS.VALUE).show();

1

難道是因爲加了「+」之間#和THIS.VALUE

1

您需要正確concate字符串一樣簡單:

$("#" + this.value).show(); 

此外,還有在你的HTML標記一個錯誤,它應該是這樣的:

<option title="Title 1" value="1">Title 1</option> 

取而代之的是:

<option value="Title 1" value="1">Title 1</option> 

其中,你有兩個值,這是你的情況造成問題。

+0

沒錯,但多數民衆贊成它是如何產生的。如果是這樣的話,你知道我應該如何調整我的jquery腳本來接受標題/字符串,而不是爲'instnace'選擇一個原因而不是'0'? – psharma 2013-05-07 18:04:05

0

this不包含字符串,但包含一個對象:元素本身。 this沒有名爲value的房產,因此this.value將無法​​使用。您必須訪問this.options[this.selectedIndex].value或通過jQuery $(this).val()選擇的孩子。這應該是一個可行的解決方案:

$(document).ready(function(){ 
    $('#bashing_title').change(function(){ 
     $(".selectInput").hide(); 
     var element = $(this).val(); 
     $("#" + element).show(); 
    }); 
});