我有一個包含兩個選項的選擇框。 取決於我需要顯示一組不同的複選框。 根據用戶選擇的內容我會顯示一組複選框或其他。JQuery:如何抓住它在選擇器中被選中的內容
在這裏,我在這裏做一個例子:
http://jsbin.com/acOXisI/20/edit
我怎麼能搶在選擇器選擇的選擇嗎? 然後我如何顯示或不顯示覆選框字段集?
非常感謝!
我有一個包含兩個選項的選擇框。 取決於我需要顯示一組不同的複選框。 根據用戶選擇的內容我會顯示一組複選框或其他。JQuery:如何抓住它在選擇器中被選中的內容
在這裏,我在這裏做一個例子:
http://jsbin.com/acOXisI/20/edit
我怎麼能搶在選擇器選擇的選擇嗎? 然後我如何顯示或不顯示覆選框字段集?
非常感謝!
你需要的JavaScript是:
// hide the fieldsets on page load
$(".otion1, .otion2").hide();
$("select").change(function() {
var $this = $(this);
if($this.val() === "1") {
$(".otion1").show();
$(".otion2").hide();
} else if($this.val() === "2") {
$(".otion1").hide();
$(".otion2").show();
} else {
$(".otion1, .otion2").hide();
}
});
// prevent hidden checkboxes from being submitted
$("form").submit(function() {
$(this).find("input[type='checkbox']").filter(":hidden").each(function() {
this.checked = false;
});
});
和一些值添加到您選擇的選項:
<option value="1">Option 1</option>
<option value="2">Option 2</option>
另外請注意,您拼寫'選項'爲'otion' - 可能會導致一些錯別字/錯誤... –
謝謝指出,並感謝您的答案。這正是我需要的! – johnnyfittizio
好的解決方案,但請注意,隱藏的值仍將提交。 – Moob
嘗試:
jQuery("#selector option:selected").val();
或獲得期權的文本,使用text()
:
jQuery("#selector option:selected").text();
更多信息:
首先,你不應該有重複頁面上的ID。
另外,我建議你把所有複選框的唯一輸入名稱,並始終從一個單一的形式提交所有這些(你會忽略那些你不需要的)。您想要的功能可以通過多種方式實現,其中一種隱藏兩個字段集並將偵聽器設置爲select元素 - 您可以使用onchange事件,並檢查選擇哪一個,並根據該字段顯示相應的字段集。
當您檢查提交的數據時,首先檢查選擇值,然後只檢查相應的複選框。
你說得對。與id有混淆。我已經改變了他們並編輯了問題。現在應該會更好。 – johnnyfittizio
太好了,很高興我可以幫助你,而不必給你一行代碼。 :) – Shomz
你必須使用jQuery:
$().ready(function(){
$('#selector').change(function(){
value=$(this).find(":selected").text();
console.log(value)
if (value == 'Option 1'){
$('.otion1').show()
$('.otion2').hide()
}
else{
$('.otion1').hide()
$('.otion2').show()
}
})
})
有你的bin克隆和工作:
嗨,你可以使用$( 「#選擇」)VAL()來獲取選定的選項。
$("#selector").change(function(){
option = $(this).val();
if(option == 1){
$(".option1").show();
$(".option2").hide();
} else if(option == 2) {
$(".option2").show();
$(".option1").hide();
} else {
$(".option2").hide();
$(".option1").hide();
}
});
我加入了獨特的Div編號,以你的選擇集,然後有確切的選定值鏈接他們。
例子: http://jsbin.com/acOXisI/18/edit
$(document).ready(function(){
$('#selector').change(function(){
value=$(this).find(":selected").val();
if (value == 'option1'){
$('#option1').show();
$('#option2').hide();
}
else if(value == 'option2'){
$('#option1').hide();
$('#option2').show();
}else{
$('#option1').show();
$('#option2').show();
}
});
});
您可以用jQuery做到這一點。請注意,隱藏字段仍然會得到提交所以他們需要禁用過:
$(function(){
$("#selector").on("change", function(){
$(".otion1, .otion2").hide().find("input").attr("disabled","disabled");
$("."+$(this).val()).show().find("input").removeAttr("disabled");
});
$("#selector").trigger("change");//run on load
});
非常好的解決方案也是你的! – johnnyfittizio
是你的一個很好的觀點。我想我不需要,因爲我不需要提交表格。我需要在Google地圖中顯示該框。將會有不同的選項/路徑,並且複選框/組將對應於要顯示的不同組標記。所以我認爲我不必擔心提交價值,對吧?無論如何謝謝你指出! – johnnyfittizio
只是注意:您不需要爲'='屬性的標籤,如果輸入的是標籤內:) – andy
謝謝你們所有的答覆!有這麼多好回覆,所有的工作!這種可惜我不得不選擇一個作爲正確的。 反正Stack Overflow岩石! – johnnyfittizio