感谢michael 的回复
可能我之前对问题的描述不太详细,导致了我的问题变成了"如何在页面加载时获取<select></select>之间的options"。
我要做的工作是在加载一个修改功能的页面时从数据库读取一系列数据,假设结果为A,B,C三条,而由于是修改的步骤,因此B是作为已选值,那么HTML
应该为
<option>A</option>
<option selected='selected'>B</option>
<option>C</option>
在使用了buffalo.bindReply('service.retrieveData', [], 'select_id');后,html结果
只是
<option>A</option>
<option>B</option>
<option>C</option>
默认显示第一项A
而似乎bindReply或是jtext、jvalue中并没有那一项参数控制selected的option
幸运地,我最后解决了问题,在这里可以分享下解决的过程,不足请斧正:
1、bindReply与remoteCall并不是'相对同步'的。文档里提到
buffalo.remoteCall(...); //AA
buffalo.remoteCall(...); //BB
1.2+版本中当js中同时存在多个remoteCall时,只有在AA完成返回后BB才开始执行;
然而,在
buffalo.bindReply(...); //CC
buffalo.remoteCall(...); //DD
并列出现时,它们却是'相对异步'的,即同时进行。
这是我打算在DD中调用一个空操作,
然后在回调时设置selected的option,
后来发现CC还没有返回所有的options,
因此最后的结果还是
<option>A</option>
<option>B</option>
<option>C</option>
2、解决方法。改用remoteCall,在回调中写入循环生成option,形如
buffalo.remoteCall('service.retrieveData', [..], function(reply) {
var result = reply.getReply();
//添加options到select中
jQuery(result).each(function() {
var optStr='<option value=\"' + this.value + '\">' + this.text +
'</option>';
jQuery('#selectId').append(optStr);
});
//设置selected的option
jQuery('#selected').attr('value', 'B');
})
thx
sincerely
On 5月27日, 上午11时40分, "Michael Chen" <
mechil...@gmail.com> wrote:
> buffalo本身没有提供这种机制,但js本身的window.onload是可以使用的,另外,prototype提供了:
>
> Event.observe(window, "load", function(){
> alert("it will be called when page loaded.");
>
> })
>
> 2008/5/27 Michael Chen <
mechil...@gmail.com>:
>
>
>
> > ---------- Forwarded message ----------
> > From: 郭贤杰 <
gxj...@gmail.com>
> > Date: 2008/5/27
> > Subject: 关于buffalo的加载结束判断
> > To:
mechil...@gmail.com
>
> > 你好,
> > 在绑定了select后,使用js对select的DOM进行操作,但是此时select的内容还没加载完,导致之后的js操作找不到option。我尝试在加载和对select的js操作之间添加alert(0),这样就能在加载完后执行后来的js操作(选择'确定'按钮后应该加载完了)。针对这个问题,不知道buffalo有没有提供相关的判断加载结束的标志可以使用,或者别的解决方法。
> > 由于论坛的帐号还在审核,所以先发邮件给你了。
> > thanks
> > sincerely
>
> > --
> > Michael Chen
> > --------------------------------
> > Blog:
http://michael.nona.name
> > MSN:
jzche...@hotmail.com
> MSN:
jzche...@hotmail.com