0 0

我的select选择后怎么也得不到我选择的值?10

问题描述:介绍下大致功能:想实现单击一个td,就变成一个select供选择,单击回车提交服务器,select初始值为原来的td值,当选择了select值后,select值就是不变,老是td原始值,还有updateSelect(optionNode,newChoice,newSelectShiftName)为什么执行两次,另外,我这个功能怎么实现更好,有好办法请请提出来,
代码如下:
jsp代码:
<td class="shiftName"><span name="preShiftName"><%=shift.getShiftname()%></span>
					<span style="display:none"><%=shift.getShiftid() %></span>
					<span>
						<select name="shiftName" id="<%=shift.getShiftid()%>" style="display:none">
							<option value="-1">选择班别</option>
							<%
								for(ShiftCategory shiftCategory:shiftCategories){
							%>
								<option value="<%=shiftCategory.getShiftName()%>">---<%=shiftCategory.getShiftName()%>---</option>
							<%
								}
							%>
						</select>
					</span>
				</td>

js代码:
 var newChoice;
$(document).ready(function(){
	
	var tdNodes = $(".shiftName");
	
	   tdNodes.click(function(){
		var tdNode = $(this);
		
		var newSelectShiftName = $("[name='shiftName']",this);
		newSelectShiftName.css("display",""); 
		
		
		var preShiftNameNode = $("[name='preShiftName']",this)
		preShiftNameNode.css("display","none");  
		var preShiftName = preShiftNameNode.text();
		
		var optionNode = $("select[@name= shiftName] option",this);
		
		optionNode.each(function(i){
			var curShiftName = $(this).val();
			
			if(curShiftName == preShiftName){
				newSelectShiftName.get(0).selectedIndex = i;
			}
		
		});
		
		newSelectShiftName.change(function(){
			var youChoice = $(this).val();
			newChoice = youChoice;
			updateSelect(optionNode,newChoice,newSelectShiftName);
		});
		
		tdNode.keyup(function(event){
			var myEvent = event || window.event;
			var keycode = myEvent.keyCode;
			
			if(keycode == 13){
				newSelectShiftName.css("display","none");
				preShiftNameNode.val(newChoice);
				preShiftNameNode.css("display",""); 
			}
		});
	});
  	
});

function updateSelect(optionNode,newChoice,newSelectShiftName){
	
		optionNode.each(function(i){
			var curShiftName = $(this).val();
			
			if(newChoice == curShiftName){
				$(this).attr("selected","true");
			}
		
		});
	
	
}
2008年11月08日 20:32

2个答案 按时间排序 按投票排序

0 0

采纳的答案

看了你发给我的消息,估计你的td需要在迭代过程中产生很多个,所以不能用ID选择器,还是上面这个,用两个DIV,直接使用父-子选择器吧,不过还是建议你,脚本操作的dom对象越少越好,越独立越好,你把显示普通文本和显示select放到像个完全不相干的div中,直接针对DIV应用脚本就行了,它们同属于TD

2008年11月08日 21:03
0 0

你这么实现太罗嗦,TD里面直接两个DIV,这两个通过单击切换是否显示,一个上放普通文本,一个上放select,这样可以大大简化你的脚本,

<div id="textDiv"></div>
<div id="selectDiv" style="display:none"></div>


是否显示通过jquery的id选择器对div的显示状态进行切换,别去搞什么select啊,option啊的,回车提交也很简单,直接给document的keyup事件注册一个提交表单的事件处理器就行了

2008年11月08日 20:48

相关推荐

    jquery select2 select美化插件

    它提供了丰富的功能和自定义选项,使得原本简单的下拉选择框变得功能强大且视觉上更具吸引力。在网页设计中,尤其是在需要处理大量数据或复杂交互的情况下,Select2 成为了首选的解决方案。 **一、主要特点** 1. *...

    React-reactselectReactJS的一个下拉选择控件

    10. **错误处理和验证**:react-select允许开发者添加自定义验证逻辑,以便在用户选择不合法值时给出反馈。 在JedWatson-react-select-4263e8c这个压缩包中,包含了该库的一个特定版本的源代码。开发者可以查看源码...

    select2自动完成插件

    例如,你可以使用`val()`方法获取或设置选中的值,监听`select2:select`事件来响应用户的选择操作。 ### 集成其他数据源 `Select2`不仅可以绑定到`&lt;select&gt;`元素,还可以与Ajax请求或远程数据源结合,动态加载选项...

    用谷歌浏览器得不到动态添加表单的值

    但请注意,`innerHTML`并不总是能够获取到表单控件的值,尤其是在动态添加的表单元素上。 在动态创建表单元素时,比如使用`document.createElement()`、`appendChild()`等方法,这些新添加的元素可能不会立即被...

    layui多选下拉框样式,整套layui-select-multiple

    当用户完成选择后,可以监听“change”事件,然后通过`.val()`方法获取选中项的值,这些值通常是以逗号分隔的字符串形式返回。 最后,根据压缩包子文件的文件名称“layui-select”,我们可以推测这是Layui下拉框...

    exTree扩展的select动态构造目录树

    在IT领域,构建动态目录树是一项常见的需求,特别是在网页应用中。`exTree`和`select`技术结合,可以实现用户交互...它使得用户在多层级的目录结构中选择和操作变得更加直观和便捷,是许多企业级应用中不可或缺的功能。

    jquery竖向下拉select选择样式表

    在网页开发中,jQuery是一种广泛使用的JavaScript库,它极大地简化了JavaScript代码的编写,使得复杂的交互和动画效果变得更为容易实现。"jquery竖向下拉select选择样式表"这个主题是关于利用jQuery来改进HTML中标准...

    QUI框架多种样式的SELECT控件.rar

    在IT行业中,尤其是在前端开发领域,用户界面的设计与交互至关...对于前端开发者来说,理解和运用这些技术能够提升Web应用的用户体验,同时也可以借鉴其设计理念,应用到自己的项目中,创造更高效、友好的交互界面。

    设置select

    在清空`&lt;select&gt;`后,可能还需要处理相关的事件,比如重新绑定事件监听器或者更新其他依赖于`&lt;select&gt;`状态的部分。 ### 四、总结 通过上述讨论,我们可以看到清除`&lt;select&gt;`下拉列表中的选项是一个简单但实用的...

    vue+layui实现select动态加载后台数据的例子

    标题中提到的关键技术点是“vue+layui实现select动态加载后台数据”,这个知识点涉及了前后端数据交互、前端框架Vue.js以及前端UI组件库Layui的使用。接下来将详细解析标题和内容中涉及的关键知识点。 ### Vue.js ...

    element ui select多选组件 重构

    在多选模式下,用户可以同时选择多个选项,这些选定的值将被存储在一个数组中。 3. **插件集成(plugins)**:可能需要引入第三方插件或自定义插件来扩展组件功能,例如实现筛选、搜索、分页等功能。这可能需要对 `...

    bootstrap-select 下拉多选扩展

    4. **实时更新**:在用户做出选择后,插件会实时更新选定的值,提供即时反馈。 5. **事件监听**:提供了多种事件,如`select.bs.select`和`deselect.bs.select`,便于开发者在用户进行选择操作时执行自定义代码。 6....

    linux c语言 select函数的用法

    如果设置的值为0,则`select`将立即返回结果,这种模式称为非阻塞模式。 #### 四、struct timeval结构体 `struct timeval`用于指定`select`函数等待的超时时间,定义如下: ```c struct timeval { long tv_sec; /*...

    jquery_select

    在不使用jQuery的情况下,处理`&lt;select&gt;`元素可能涉及到复杂的DOM操作和事件监听。但借助jQuery,这些任务变得简单而直观。 jQuery中的`select`选择器允许我们轻松地选取页面上的`&lt;select&gt;`元素。例如,如果我们有...

    解决div总是被select遮挡的问题.rar

    然而,`select`元素在某些浏览器中拥有特殊的堆叠层次,即使其`z-index`设置得较低,也可能覆盖其他元素。 描述中提到的解决方案是利用一个空的`iframe`。`iframe`(inline frame)元素可以嵌入另一个文档到当前...

    cssselect:PythonCSS选择器

    **cssselect:Python中的CSS选择器** 在Python编程中,`cssselect`是一个非常有用的库,它实现了W3C CSS2.1和部分CSS3的选择器语法,使得开发者能够使用类似CSS的方式来选取XML或HTML文档中的元素。这个库是基于`...

    jquery操作select插件.pdf

    如果找不到匹配项,会弹出警告"下拉框中不存在该项"。 7. **设置选中指定索引的项**: `jQuery.fn.setSelectedIndex` 方法允许你设置指定索引的选项为选中状态。如果索引超出范围,会弹出警告"选中项索引超出范围...

    input为disabled提交后得不到该值的解决方法

    提交时得不到该值" readonly="readonly"&gt; ``` 这样,虽然用户不能修改字段,但在表单提交时,服务器将能够接收到该字段的值。 在实际开发中,考虑到无障碍性(accessibility),也要注意`disabled`和`readonly`的...

    vue实现select下拉显示隐藏功能

    在实际项目中,可能面临有成百上千个选项的下拉菜单,这时如果手动编写每个`&lt;el-option&gt;`将变得不切实际。此时,可以通过定义一个数组来存储这些选项,然后使用`v-for`来遍历这个数组生成下拉菜单的选项,这样不仅...

    Layui-select-extend-master.zip

    同时,Layui-select-extend也提供了丰富的配置选项,允许开发者自定义样式、事件处理、数据源等,以满足各种项目需求。 在实际使用中,我们首先需要引入Layui库和Layui-select-extend插件的相关文件。这个压缩包...

Global site tag (gtag.js) - Google Analytics