浏览 10248 次
锁定老帖子 主题:yui-ext中多个超链接共用一个id问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-05-04
我使用多个链接共用一个id,如下: <c:forEach var="sSDIItem" items"${sSDIList}"> <c:if test="${(sSDIItem.grade==null)} <input type="hidden" name="stuAssignID" value="${sSDIItem.stuAssignID}"/> <a href="#" onclick="javascript:transStuAssignID('${sSDIItem.stuAssignID}'); return false;" id="show-dialog-btn">录入成绩</a> </c:if> </c:forEach> 然后在ext中调用: /* * Ext JS Library 1.0 * Copyright(c) 2006-2007, Ext JS, LLC. * licensing@extjs.com * * http://www.extjs.com/license */ // create the HelloWorld application (single instance) var enterGrade = function(){ // everything in this space is private and only accessible in the HelloWorld block // define some private variables var dialog, showBtn,postBtn; var wait,error,errorMsg; var grade,commentInfo; //var simple,grade,stuAssignID,commention; // return a public interface return { init : function(){ showBtn = Ext.get('show-dialog-btn'); wait = Ext.get('post-wait'); error = Ext.get('post-error'); errorMsg = Ext.get('post-error-msg'); Ext.QuickTips.init(); Ext.form.Field.prototype.msgTarget = 'under'; grade = new Ext.form.TextField({ allowBlank:false, regex:/^\d+(\.\d+)?$/, regexText:'必须输入实数,如3,2.5等' }); grade.applyTo('grade'); commentInfo=new Ext.form.TextArea({ allowBlank:true, grow: true, preventScrollbars:true }); commentInfo.applyTo('comment'); /* simple = new Ext.form.Form({ labelWidth: 75, // label settings here cascade unless overridden url:'http://localhost:8080/WebAssignMIS/gradeManage.do?method=enterGrade' }); stuAssignID=new Ext.form.TextField({ fieldLabel: 'First Name', name: 'a', width:175, regex:/^\d+$/, regexText:'成绩必须为合法,如4或3.5等', allowBlank:false }); grade=new Ext.form.TextField({ fieldLabel: 'First Name', name: 'grade', width:175, regex:/^\d+$/, regexText:'成绩必须为合法,如4或3.5等', allowBlank:false }); commention=new Ext.form.TextField({ fieldLabel: 'Email', name: 'comment', vtype:'email', regexText:'电子邮件不合法', width:175 }); simple.add(stuAssignID,grade,commention); simple.addButton('确定',simple.submit,simple); simple.addButton('取消'); simple.render('form-ct'); */ // attach to click event showBtn.on('click', this.showDialog, this); }, // submit the comment to the server submitComment : function(){ wait.radioClass('active-msg'); if(grade.validate()===false) { wait.update('验证信息不合法'); return; } var commentSuccess = function(o){ postBtn.disable(); wait.update('录入成绩信息成功!'); document.location.reload(); }; var commentFailure = function(o){ postBtn.enable(); error.radioClass('active-msg'); errorMsg.update('不能连接服务器.....'); }; Ext.lib.Ajax.formRequest('comment-form', 'http://localhost:8080/WebAssignMIS/gradeManage.do?method=enterGrade', {success: commentSuccess, failure: commentFailure}); }, closeWindow : function(){ grade.reset(); commentInfo.reset(); dialog.hide(); }, showDialog : function(){ if(!dialog){ // lazy initialize the dialog and only create it once dialog = new Ext.BasicDialog("comments-dlg", { autoTabs:true, width:500, height:330, shadow:false, minWidth:500, minHeight:330, proxyDrag:true }); dialog.addKeyListener(27, dialog.hide, dialog); postBtn =dialog.addButton('确定', this.submitComment, dialog); dialog.addButton('关闭', this.closeWindow, dialog); dialog.on('hide', function(){ wait.removeClass('active-msg'); error.removeClass('active-msg'); }); } dialog.show(showBtn.dom); } }; }(); // using onDocumentReady instead of window.onload initializes the application // when the DOM is ready, without waiting for images and other resources to load Ext.EventManager.onDocumentReady(enterGrade.init, enterGrade, true); //Ext.onReady(HelloWorld.init, HelloWorld, true); 但是在点击超链接的时候(由于有多个超链接),点击第一个超链接时候能弹出窗口,后面的就不能了。 请各位帮忙看看 是这么回事,谢谢! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-05-04
|
|
返回顶楼 | |
发表时间:2007-05-05
或者参考 JS函数式 的用法:
“下面你也许要尝试写下面的代码: this.button.onclick = function() { alert(this.value); }; 如果你执行它你就会发现提示框中间是空的。为什么会这样呢?其实原因在于JavaScript的可见性规则。当onclick函数被执行时this指向的是按钮的DOM节点而非自定义的按钮对象。 我们如何解决这个问题? 使用函数式编程: this.button.onclick = (function(v) { return function() { alert(v); }; }) (this.value); 这种情况下执行该匿名函数会将v绑定到this.value上。” |
|
返回顶楼 | |
发表时间:2007-05-05
三楼的兄弟在说啥呀!好像不是回答我的问题啊
|
|
返回顶楼 | |
发表时间:2007-05-06
id不能共用,如果共用的话,在js中通过id也只能找到第一个,不是全部的
|
|
返回顶楼 | |
发表时间:2007-05-06
先用CLASS匹配所有元素,然后获取这些元素后再通过this.id得到不同元素的id(这里不用id直接获取元素的方法,好处是事先不必知道id上限和下限)
|
|
返回顶楼 | |
发表时间:2007-05-06
hitqiang 写道 三楼的兄弟在说啥呀!好像不是回答我的问题啊
What I wanted talk to you, that is "授人以鱼不如授人以渔 ",got it? |
|
返回顶楼 | |
发表时间:2007-05-07
I have got it,thanks
|
|
返回顶楼 | |
发表时间:2007-05-18
使用 Ext.select('a') 操作你的link
|
|
返回顶楼 | |