asp.net 程序我的页面上的 文本框 和 复选框 和 单选框 和 下拉框 ,都是页面加载时动态读取数据库生成的,问题是我怎么通过 js 去得到用户在页面上选中或者文本框输入的值,我这样做就是想在页面无刷新的情况下得到用户输入的值判断,现在我实现的方法是在Changed事件里做的,知道的话 能不能详细的给说说,或者有例子的也行,先谢谢了,加分也没有问题

解决方案 »

  1.   

    <input type="text" id="input1" value="" onKeyDown="showValue(this.value);">
    <input type="text" id="input2" value="" ><script>
    showValue=function(val){
      //alert(val);
    document.getElementById("input2").value=val;
    .....
    ....
     }
     
    </script>
      

  2.   


    首先页面上所有的文本框 都是动态生成的,也就是说 网站运行前是看不到 <input>标签的
      

  3.   

    简单的话, 可以直接用jquery的live事件$("select").live("change", doOnChange);function doOnChange(e){
      var select = $(e.target);
      var options = $(select).find("option");
      $.each(options, function(key, value){
        if($(value).attr('selected') == true || $(value).attr('selected') == "selected"){
           alert($(valeu).val());
        }
      });
    }
      

  4.   

    //获取所有input的值,包括radio,checkbox,input,
    var inputs = document.getElementsByTagName("INPUT");
    for(var i=0,j=inputs.length;i<j;i++)
    {
    //此处可以排除按钮 通过inputs.type
     alert(inputs[i].value);
    }
    //获取所有select(dropdownlist)
    var selects = document.getElementsByTagName("SELECT");
    for(var i=0,j=selects.length;i<j;i++)
    {
     alert(selects[i].value);
    }
      

  5.   

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Test" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>测试</title>
        <script language="javascript" type="text/javascript">
            var id = "<%=this.DropDownList1.ClientID %>"; //输出控件的客户端ID
            window.onload = function() {
                var slt = document.getElementById(id);
                slt.attachEvent("onchange", SelectChanged);
            }
            function SelectChanged() {
                var slt = document.getElementById(id);
                alert(slt.value);
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:DropDownList ID="DropDownList1" runat="server"  Width="244px">
                <asp:ListItem Value="1">选项1</asp:ListItem>
                <asp:ListItem Value="2">选项2</asp:ListItem>
                <asp:ListItem Value="2">选项3</asp:ListItem>
            </asp:DropDownList>
        
        </div>
        </form>
    </body>
    </html>
      

  6.   

    其它控件的实现方法都一样,都是把控件的ClientID 输出在JS代码中,然后就可以使用JS去获取了
      

  7.   


    我如何在标签里调用那段JS代码呢?运行前的空标签是(我的代码)
    <asp:label id="Label39" runat="server" CssClass="Normal" Width="40px">商品:</asp:label>&nbsp;<asp:dropdownlist id="ddlValBatch" runat="server" Width="230px" AutoPostBack="False"></asp:dropdownlist>
      

  8.   

    你详细描述一下需求,要不DEMO 都没法写
      

  9.   

    function addEvent(id){
        try{
            var _obj = $(id);
            if(_obj){
                _obj.onblur = function(){
                    ...
                }
            }
        }catch(e){
            setTimeout(function(){addEvent(id)}, 50);
        }
    }
      

  10.   


    就是 9# 给去的js 代码 可以获得那个下拉框的 id 但是我要怎么在标签里调用才能试那个js代码产生效果呢??
      

  11.   


    怪我的表达能力有限,害的很多人没有明白我的意思!是这样的:
    我在页面上有一个下拉框,AutoPostBack="True",让它等于true是因为每次选中后我要在后台代码判断他选中的值,在做相应的处理,这样的话页面每次都有刷新,现在我不想让页面刷新,想用js获得他选中的值,但是下拉框里的值都是数据库动态生成的,所以我的问题是怎么用js获得每次选中的值,
    还有一个问题是 ,页面上的所有Textbox 也是给据数据库的配置动态生成的文本框,在页面上根本看不到标签(也就是你不知道name 和 id是什么),当页面运行起来了,右键源代码这样才可以看到,我现在想做的是,当用户在第一个文本框里输入了值我用js判断是不是合法 
      

  12.   


    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        
    </head>
    <body>
        <form id="form1" runat="server">
        <asp:DropDownList ID="ddl" runat="server"></asp:DropDownList>
        
        
        <%--onchange 也可以向下面这样 硬写--%>
        <%--<asp:DropDownList ID="ddl" onchange='alert(this.value);' runat="server"></asp:DropDownList>--%>
        </form>
        
        <script>
            var sel = document.getElementById('<%= ddl.ClientID %>');
            sel.onchange = function() { alert(this.value); };
        </script>
        
    </body>
    </html>
    [code=C#]
        protected void Page_Load(object sender, EventArgs e)
        {
            ddl.Items.Add(new ListItem("A", "1"));
            ddl.Items.Add(new ListItem("B", "2"));
            ddl.Items.Add(new ListItem("C", "3"));
            ddl.Items.Add(new ListItem("D", "4"));        //可以在这写 为DropDownList 追加事件        //ddl.Attributes.Add("onchange", "alert(this.value);");
        }[/code]
      

  13.   

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Test" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>测试</title>
        <script language="javascript" type="text/javascript">
           
            function SelectChanged(slt) {
                //var slt = document.getElementById(id);
                alert(slt.value);
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="false" Width="244px"
                onchange="SelectChanged(this)">
                <asp:ListItem Value="1">选项1</asp:ListItem>
                <asp:ListItem Value="2">选项2</asp:ListItem>
                <asp:ListItem Value="2">选项3</asp:ListItem>
            </asp:DropDownList>
        
        </div>
        </form>
    </body>
    </html>
      

  14.   

    直接在标签里加上这句
     onchange="SelectChanged(this)"
    然后写个JS函数SelectChanged就行了
      

  15.   

    function SelectChanged(slt) {
                //var slt = document.getElementById(id);
                alert(slt.value);            if(slt.value ==  "其他")
    document.getElementById("txtValReBatch").style.visibility = "visible";  
    else
    document.getElementById("txtValReBatch").style.visibility =   "hidden";   
            }
    我在静态页面里这样写是可以实现文本框的 显示 和 隐藏的,怎么在项目里写就不行呢?我也得到了我选择的那个值,
      

  16.   

    if(slt.value ==  "其他")
                    document.getElementById("txtValReBatch").style.visibility = "visible";  
                else
                    document.getElementById("txtValReBatch").style.visibility =   "hidden";  =>if(slt.value ==  "其他")
                    document.getElementById("<%=txtValReBatch.ClientID%>").style.display= "";  
                else
                    document.getElementById("<%=txtValReBatch.ClientID%>").style.display=   "none";  
      

  17.   

    这不是ASP.NET的问题么。
    前台把JS方法写好。
    例如:function dllchanged(obj){
    alert(obj.value);
    }然后,后台.NET生成控件的时候。使用OBJ.setAttribute("onchange","dllchenged(this)");
      

  18.   

    这个setAttribute方法非常强大。减少画面hidden作用很明显,尤其是在GRID中,因为SET的这些东西,你写成控件标准属性,那它在页面就可以生效,方法也是一样的。如果你写成例如AA,BB之类的非关键字,那么你提交后台之后它们还能带回来,效果和HIDDEN控件一样。这是2003里用过的。。最近几年改嫁JAVA。。不知道新的VS还好使不。
      

  19.   

    首先确定在运行的页面中,有没有txtValReBatch这个ID的dom
    运行以后查看源文件看有没有它建议你先学好HTML,最基础的东西因为不管是.NET、JSP、PHP或者其它的任何服务器技术,最终展示在用户面前的全都是HTML
      

  20.   


    恩 谢谢 你的指导 。
    不过我的还是不会显示文本框,我的代码就是用你上面写的,我有两个页面 A.ascx 和 B.aspx  ,A页面是一个用户控件,需要隐藏和显示的那个文本框就是在A页面里的,然后A页面嵌套在了B页面里,在页面上选中“其他”的时候也取到了值,但是文本框就是不出来,在page_load里把文本框的属性设置成隐藏的txtValReBatch.Visible = false
      

  21.   

    被无视了?在page_load里把文本框的属性设置成隐藏的txtValReBatch.Visible = falseasp.net 的控件设置  Visible = false是不会在页面上呈现出来的使用 txtValReBatch.Style.Add("display", "none"); 隐藏
      

  22.   

    下载中文 jquery API 上面应该有你想要的  
      

  23.   


    Sandy945 又来麻烦你了
    <asp:RadioButtonList id="rblValSubclass" runat="server" AutoPostBack="False" Visible="False" RepeatDirection="Vertical"
    RepeatLayout="Flow" onchange="Subclass(this)"></asp:RadioButtonList>生成静态页面以后<span id="rblValSubclass" onchange="Subclass(this)"><input id="rblValSubclass_0" type="radio" name="rblValSubclass" value="1" /><label for="rblValSubclass_0">1</label><br /><input id="rblValSubclass_1" type="radio" name="rblValSubclass" value="2" /><label for="rblValSubclass_1">2</label><br /><input id="rblValSubclass_2" type="radio" name="rblValSubclass" value="3" /><label for="rblValSubclass_2">3</label><br /><input id="rblValSubclass_3" type="radio" name="rblValSubclass" value="4" /><label for="rblValSubclass_3">4</label><br /><input id="rblValSubclass_4" type="radio" name="rblValSubclass" value="5" /><label for="rblValSubclass_4">5</label><br /><input id="rblValSubclass_5" type="radio" name="rblValSubclass" value="其他" /><label for="rblValSubclass_5">其他</label></span>
    所以我调用的那个js 就没有作用了,能不能指点一下啊
      

  24.   


    <script type="text/javascript">
     //function Subclass(slt) {//行业
    //if(slt.value == "其他")
    //{
    alert(slt.value);
    // document.getElementById("<%=txtValReamrkOther.ClientID%>").style.display= ""; 

    //}
    //else
    //{
    // document.getElementById("<%=txtValReamrkOther.ClientID%>").style.display= "none";
    // document.getElementById("<%=txtValReamrkOther.ClientID%>").value = "";       
    //}
     //}
    </script>
      

  25.   

    哦,明白你的意思了
    rblValSubclass.Items[index].Attributes.Add("onchange","Subclass(this);");index 需要循环
      

  26.   

    for(int i=0;i<rblValSubclass.Items.Count;i++)
    {rblValSubclass.Items[i].Attributes.Add("onchange","Subclass(this);");}
      

  27.   

    不行啊
    最终在静态页面里那个 onchange 不在input里如下:<span id="rblValSubclass" onchange="Subclass(this)">
    <span onchange="Subclass(this);">
    <input id="rblValSubclass_0" type="radio" name="rblValSubclass" value="1" />
    <label for="rblValSubclass_0">1</label>
    </span>
    <br />
    <span onchange="Subclass(this);">
    <input id="rblValSubclass_1" type="radio" name="rblValSubclass" value="2" />
    <label for="rblValSubclass_1">2</label></span><br /><span onchange="Subclass(this);"><input id="rblValSubclass_2" type="radio" name="rblValSubclass" value="3" /><label for="rblValSubclass_2">3</label></span><br /><span onchange="Subclass(this);"><input id="rblValSubclass_3" type="radio" name="rblValSubclass" value="4" /><label for="rblValSubclass_3">4</label>
    </span><br /><span onchange="Subclass(this);"><input id="rblValSubclass_4" type="radio" name="rblValSubclass" value="5" /><label for="rblValSubclass_4">5</label></span><br />
    <span onchange="Subclass(this);"><input id="rblValSubclass_5" type="radio" name="rblValSubclass" value="其他" /><label for="rblValSubclass_5">其他</label></span></span>
      

  28.   


    var els=document.getElementById('<%=rblValSubclass.ClientID%>').getElementsByTagName('input');for(var i=0,len=els.length;i<len;i++)
    {
        if(els[i].type=='radio')
        {
             els[i].onchange=function Subclass(slt) {alert(slt.value);
    //...}
        }
    }