javaScript 动态取值问题? asp.net 程序我的页面上的 文本框 和 复选框 和 单选框 和 下拉框 ,都是页面加载时动态读取数据库生成的,问题是我怎么通过 js 去得到用户在页面上选中或者文本框输入的值,我这样做就是想在页面无刷新的情况下得到用户输入的值判断,现在我实现的方法是在Changed事件里做的,知道的话 能不能详细的给说说,或者有例子的也行,先谢谢了,加分也没有问题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <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> 首先页面上所有的文本框 都是动态生成的,也就是说 网站运行前是看不到 <input>标签的 简单的话, 可以直接用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()); } });} //获取所有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);} <%@ 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> 其它控件的实现方法都一样,都是把控件的ClientID 输出在JS代码中,然后就可以使用JS去获取了 我如何在标签里调用那段JS代码呢?运行前的空标签是(我的代码)<asp:label id="Label39" runat="server" CssClass="Normal" Width="40px">商品:</asp:label> <asp:dropdownlist id="ddlValBatch" runat="server" Width="230px" AutoPostBack="False"></asp:dropdownlist> 你详细描述一下需求,要不DEMO 都没法写 function addEvent(id){ try{ var _obj = $(id); if(_obj){ _obj.onblur = function(){ ... } } }catch(e){ setTimeout(function(){addEvent(id)}, 50); }} 就是 9# 给去的js 代码 可以获得那个下拉框的 id 但是我要怎么在标签里调用才能试那个js代码产生效果呢?? 怪我的表达能力有限,害的很多人没有明白我的意思!是这样的:我在页面上有一个下拉框,AutoPostBack="True",让它等于true是因为每次选中后我要在后台代码判断他选中的值,在做相应的处理,这样的话页面每次都有刷新,现在我不想让页面刷新,想用js获得他选中的值,但是下拉框里的值都是数据库动态生成的,所以我的问题是怎么用js获得每次选中的值,还有一个问题是 ,页面上的所有Textbox 也是给据数据库的配置动态生成的文本框,在页面上根本看不到标签(也就是你不知道name 和 id是什么),当页面运行起来了,右键源代码这样才可以看到,我现在想做的是,当用户在第一个文本框里输入了值我用js判断是不是合法 <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] <%@ 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> 直接在标签里加上这句 onchange="SelectChanged(this)"然后写个JS函数SelectChanged就行了 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"; }我在静态页面里这样写是可以实现文本框的 显示 和 隐藏的,怎么在项目里写就不行呢?我也得到了我选择的那个值, 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"; 这不是ASP.NET的问题么。前台把JS方法写好。例如:function dllchanged(obj){alert(obj.value);}然后,后台.NET生成控件的时候。使用OBJ.setAttribute("onchange","dllchenged(this)"); 这个setAttribute方法非常强大。减少画面hidden作用很明显,尤其是在GRID中,因为SET的这些东西,你写成控件标准属性,那它在页面就可以生效,方法也是一样的。如果你写成例如AA,BB之类的非关键字,那么你提交后台之后它们还能带回来,效果和HIDDEN控件一样。这是2003里用过的。。最近几年改嫁JAVA。。不知道新的VS还好使不。 首先确定在运行的页面中,有没有txtValReBatch这个ID的dom运行以后查看源文件看有没有它建议你先学好HTML,最基础的东西因为不管是.NET、JSP、PHP或者其它的任何服务器技术,最终展示在用户面前的全都是HTML 恩 谢谢 你的指导 。不过我的还是不会显示文本框,我的代码就是用你上面写的,我有两个页面 A.ascx 和 B.aspx ,A页面是一个用户控件,需要隐藏和显示的那个文本框就是在A页面里的,然后A页面嵌套在了B页面里,在页面上选中“其他”的时候也取到了值,但是文本框就是不出来,在page_load里把文本框的属性设置成隐藏的txtValReBatch.Visible = false 被无视了?在page_load里把文本框的属性设置成隐藏的txtValReBatch.Visible = falseasp.net 的控件设置 Visible = false是不会在页面上呈现出来的使用 txtValReBatch.Style.Add("display", "none"); 隐藏 下载中文 jquery API 上面应该有你想要的 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 就没有作用了,能不能指点一下啊 <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> 哦,明白你的意思了rblValSubclass.Items[index].Attributes.Add("onchange","Subclass(this);");index 需要循环 for(int i=0;i<rblValSubclass.Items.Count;i++){rblValSubclass.Items[i].Attributes.Add("onchange","Subclass(this);");} 不行啊最终在静态页面里那个 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> 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);//...} }} jquery easyUI 批量提交数据. 为什么这个非空验证不起作用 鼠标放在链结上,显示相关图片 如何同步调整两个datagrid的大小? 一个页面有多组复选框,怎样控制每组复选框最少选一个最多选5个 100分请高手帮忙,js加asp CSDN终于能用了,自己做了一个模拟FILE的页面,在单击FILE的浏览按钮后,页面能SUBMIT,但单击“选择”时却提示“网页上有错误---拒绝访 梅花雪(疏影横斜)网页日历控件拒绝访问,请求帮助!!!! FLASH 能不能 把参数传递给网页? 我想这样。。。。能行吗? 如何更改值并自动提交表单 求input 结尾必定为.mp3 或者.wma的正则表达式
<input type="text" id="input2" value="" ><script>
showValue=function(val){
//alert(val);
document.getElementById("input2").value=val;
.....
....
}
</script>
首先页面上所有的文本框 都是动态生成的,也就是说 网站运行前是看不到 <input>标签的
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());
}
});
}
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);
}
<!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>
我如何在标签里调用那段JS代码呢?运行前的空标签是(我的代码)
<asp:label id="Label39" runat="server" CssClass="Normal" Width="40px">商品:</asp:label> <asp:dropdownlist id="ddlValBatch" runat="server" Width="230px" AutoPostBack="False"></asp:dropdownlist>
try{
var _obj = $(id);
if(_obj){
_obj.onblur = function(){
...
}
}
}catch(e){
setTimeout(function(){addEvent(id)}, 50);
}
}
就是 9# 给去的js 代码 可以获得那个下拉框的 id 但是我要怎么在标签里调用才能试那个js代码产生效果呢??
怪我的表达能力有限,害的很多人没有明白我的意思!是这样的:
我在页面上有一个下拉框,AutoPostBack="True",让它等于true是因为每次选中后我要在后台代码判断他选中的值,在做相应的处理,这样的话页面每次都有刷新,现在我不想让页面刷新,想用js获得他选中的值,但是下拉框里的值都是数据库动态生成的,所以我的问题是怎么用js获得每次选中的值,
还有一个问题是 ,页面上的所有Textbox 也是给据数据库的配置动态生成的文本框,在页面上根本看不到标签(也就是你不知道name 和 id是什么),当页面运行起来了,右键源代码这样才可以看到,我现在想做的是,当用户在第一个文本框里输入了值我用js判断是不是合法
<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]
<!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>
onchange="SelectChanged(this)"
然后写个JS函数SelectChanged就行了
//var slt = document.getElementById(id);
alert(slt.value); if(slt.value == "其他")
document.getElementById("txtValReBatch").style.visibility = "visible";
else
document.getElementById("txtValReBatch").style.visibility = "hidden";
}
我在静态页面里这样写是可以实现文本框的 显示 和 隐藏的,怎么在项目里写就不行呢?我也得到了我选择的那个值,
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";
前台把JS方法写好。
例如:function dllchanged(obj){
alert(obj.value);
}然后,后台.NET生成控件的时候。使用OBJ.setAttribute("onchange","dllchenged(this)");
运行以后查看源文件看有没有它建议你先学好HTML,最基础的东西因为不管是.NET、JSP、PHP或者其它的任何服务器技术,最终展示在用户面前的全都是HTML
恩 谢谢 你的指导 。
不过我的还是不会显示文本框,我的代码就是用你上面写的,我有两个页面 A.ascx 和 B.aspx ,A页面是一个用户控件,需要隐藏和显示的那个文本框就是在A页面里的,然后A页面嵌套在了B页面里,在页面上选中“其他”的时候也取到了值,但是文本框就是不出来,在page_load里把文本框的属性设置成隐藏的txtValReBatch.Visible = false
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 就没有作用了,能不能指点一下啊
<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>
rblValSubclass.Items[index].Attributes.Add("onchange","Subclass(this);");index 需要循环
{rblValSubclass.Items[i].Attributes.Add("onchange","Subclass(this);");}
最终在静态页面里那个 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>
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);
//...}
}
}