2011-11-16 48 views
1

大家好我有通過與複選框下拉列表的例子了從這裏如何使文本框可見選擇下拉列表是多選

http://www.dotnetspeaks.com/DisplayArticle.aspx?ID=79

這對我來說工作正常。但根據我的要求,我將在下拉菜單中有3個項目,如果我選擇了所有我希望啓用窗體上可用的所有3個文本框。如果不是我想就只有相應的文本框爲可見

所以在腳本作爲我的測試中,我寫如下

<script language="javascript"> 
    function GetSelectedValue() { 
     var chkBox = document.getElementById("<%=chkList.ClientID%>"); 
     var checkbox = chkBox.getElementsByTagName("input"); 
     var objTextBox = document.getElementById("<%=txtChkValue.ClientID%>"); 
     var obj1 = document.getElementById("<%=txt1.ClientID%>"); 
     var counter = 0; 
     objTextBox.value = ""; 
     for (var i = 0; i < checkbox.length; i++) { 
      if (checkbox[i].checked) { 

       var chkBoxText = checkbox[i].parentNode.getElementsByTagName("label"); 
       if (objTextBox.value == "") { 
        objTextBox.value = chkBoxText[0].innerHTML; 
        if (objTextBox.value = "hi") { 

         document.getElementById("<%=txt1.ClientID%>").style.visibility = 'visible'; // This is what i tested but this is not working      } 

       } 
       else { 
        objTextBox.value = objTextBox.value + ", " + chkBoxText[0].innerHTML; 
       } 
      } 
     } 
    } 
</script> 

所以任何一個可以幫助我,請

回答

0

快速修復:

變化

document.getElementById("<%=txt1.ClientID%>").style.visibility = 'visible'; // This is what i tested but this is not working 

$("#<%=txt1.ClientID%>").show(); 

我也建議你重構你的JS功能,並傳入的ClientID和使用jQuery選擇:

//note: I haven't tested all the selectors 
function GetSelectedValue(chkList, txtChk, txt1) { 
    var chkBox = $("#"+ chkList); 
    var checkbox = chkBox.find("input"); 
    var objTextBox = $("#" + txt1); 
    var obj1 =$("#" + txtChk); 
    objTextBox.val(""); 
    $.each(checkbox, function(cbItem) { 
     if (cbItem.checked) { 
      var chkBoxText = cbItem.parent.find("label")[0]; 
      if (objTextBox.val() == "") { 
       objTextBox.val(chkBoxText.html()); 
       if (objTextBox.val() == "hi") { 
        obj1.show();      
       } 
      } 
      else { 
       objTextBox.val(objTextBox.val()+ ", " + chkBoxText.html()); 
      } 
     } 
    }); 
} 
+0

最初設置我的控制''能見度爲false,這會導致問題 – Vivekh

+0

我推薦display:none和display:block。 –

+0

然後我應該通過每個和evry文本框,但我應該顯示文本框可見按描述 – Vivekh

0

document.getElementById("<%=txt1.ClientID%>").style.visibility = 'visible';改變這 document.getElementById("<%=txt1.ClientID%>").style.visibility = '';document.getElementById("<%=txt1.ClientID%>").style.visibility = 'block';

+0

最初我將我的控制可見性設置爲false這會導致問題 – Vivekh

0

您是否嘗試過使用:

document.getElementById("<%=txt1.ClientID%>").style.display = "none" 

document.getElementById("<%=txt1.ClientID%>").style.display = "block" 

或者因爲你所引用的例子有jQuery的:

$('<%=txt1.ClientID%>').hide(); 

$('<%=txt1.ClientID%>').show(); 
+0

最初我將我的控制可見性設置爲false會導致問題 – Vivekh

+0

這可能是你的問題。如果您在.NET中的控件上使用.Visible = false屬性,我認爲控件不會將輸入呈現給瀏覽器。 (從使用Web窗體開始已經很長時間了)。你可能想要做的是在輸入周圍放置一個包裝標籤,比如DIV,給出DIV和ID,並根據下拉的值來隱藏/顯示DIV。它需要更多的工作來管理容器(div)的可見性,但它應該適合你。 –

相關問題