C# 如何在ASP中使用JavaScript用DropDownList的值填充文本区域

C# 如何在ASP中使用JavaScript用DropDownList的值填充文本区域,c#,javascript,visual-studio-2010,asp.net-mvc-3,C#,Javascript,Visual Studio 2010,Asp.net Mvc 3,我正在使用C#和SQLServer2005开发一个ASP.NETMVC3应用程序 我还使用实体框架和代码优先方法 在视图中,我有一个下拉列表、一个按钮和一个文本区域 单击按钮时,如何用DropDownlist的值填充面板 我尝试使用javascript,但我认为这不起作用,因为当我点击按钮时,什么都没有发生 代码如下: <%:Html.Label("Poste Suivant :")%><%: Html.DropDownListFor(model => model.Pos

我正在使用C#和SQLServer2005开发一个ASP.NETMVC3应用程序

我还使用实体框架和代码优先方法

在视图中,我有一个下拉列表、一个按钮和一个文本区域

单击按钮时,如何用DropDownlist的值填充面板

我尝试使用javascript,但我认为这不起作用,因为当我点击按钮时,什么都没有发生

代码如下:

<%:Html.Label("Poste Suivant :")%><%: Html.DropDownListFor(model => model.PosteSuivantSelected, Model.PostesItems, new { @id = "dd" })%>
<input type="button" value="Ajouter" id="add"  onclick="addtext()"/>
<textarea ID="ta" cols="10" name="S1" rows="2" ></textarea>

<script language="javascript" type="text/javascript">
        function addtext() {

            var dd = document.getElementById('dd');
            var ta = document.getElementById('ta');
            var add = document.getElementById('add');
            if (add.onkeypress) {
                ta.value = dd.selectedvalue;
            }

        }
</script>
model.PosteSuivantSelected,model.posteItems,新的{@id=“dd”})%>
函数addtext(){
var dd=document.getElementById('dd');
var ta=document.getElementById('ta');
var add=document.getElementById('add');
如果(添加onkeypress){
ta.value=dd.selectedvalue;
}
}
使用以下方法:

ta.innerText = dd.options[dd.selectedIndex].innerText;

只要你的.net代码呈现一个类似下面的选择列表,问题就只存在于你的javascript中。您需要使用所选索引来获取该选项。我也不确定你为什么要检查他们的按键功能是否存在于add上

<select id="dd"><option>a</option><option>b</option></select>
<input type="button" value="Ajouter" id="add"  onclick="addtext()"/>
<textarea ID="ta" cols="10" name="S1" rows="2" ></textarea>

<script language="javascript" type="text/javascript">
        function addtext() {

            var dd = document.getElementById('dd');
            var ta = document.getElementById('ta');
            var add = document.getElementById('add');
            //if (add.onkeypress) {
                ta.value = dd.options[dd.selectedIndex].value;
            //}

        }
</script>
如果您只需要文本区域中的项目一次,我会将所选值存储在数组中,然后用数组的连接值替换该值

<script language="javascript" type="text/javascript">
        var storedValues = [];
        function addtext() {

            var dd = document.getElementById('dd');
            var ta = document.getElementById('ta');
            var add = document.getElementById('add');
            //if (add.onkeypress) {
            var selectedValue = dd.options[dd.selectedIndex].value;
            if(storedValues.indexOf(selectedValue) === -1){
                storedValues.push(selectedValue)
                ta.value = storedValues.join('')
            }
            //}

        }
</script>

var StoredValue=[];
函数addtext(){
var dd=document.getElementById('dd');
var ta=document.getElementById('ta');
var add=document.getElementById('add');
//如果(添加onkeypress){
var selectedValue=dd.options[dd.selectedIndex].value;
if(storedValues.indexOf(selectedValue)=-1){
StoredValue.push(selectedValue)
ta.value=storedValues.join(“”)
}
//}
}

是否缺少
我看不出您在哪里调用addtext()函数。除非你们调用它,否则它不会被执行。谢谢你们的回答,,,这是复制粘贴的错误!请看我的更新,但我必须使用DropDownList,因为我需要它在其他东西!那很好。您的DropDownList看起来没有任何问题,所以这些javascript更改应该可以修复它。thx topherd,,太好了!!!但是仍然有一个问题,,,当我更改另一个项目并单击按钮时,,,文本区域中的文本也不会被添加(这意味着被替换),可能是我误解了。您是否试图将这些值添加到文本区域而不是替换它们?我添加了一个连接值而不是替换值的函数。我添加了一个只让值出现一次的解决方案。应该有效。textarea具有属性innerText,select元素具有选项,selectedIndex,option元素具有innerText。在我自己的页面上尝试过。谢谢,,,topherd找到解决方案,,但仍然有一个问题请查看上面的评论
<script language="javascript" type="text/javascript">
        var storedValues = [];
        function addtext() {

            var dd = document.getElementById('dd');
            var ta = document.getElementById('ta');
            var add = document.getElementById('add');
            //if (add.onkeypress) {
            var selectedValue = dd.options[dd.selectedIndex].value;
            if(storedValues.indexOf(selectedValue) === -1){
                storedValues.push(selectedValue)
                ta.value = storedValues.join('')
            }
            //}

        }
</script>