線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1415
推到 Plurk!
推到 Facebook!

Delphi下IntraWeb的ScriptEvent中的控件数值传递问题

尚未結案
waring_id
一般會員


發表:1
回覆:6
積分:6
註冊:2005-06-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-07 23:36:35 IP:218.20.xxx.xxx 未訂閱
在Delphi7.06版下安装了IntraWeb7.1.0.5在做一个测试时发现在控件的ScriptEvent事件中不能取得本控件的值。(win2000 srv access delphi7.06) 我的操作方法如下: 1:新建一IntraWeb的应用程序,设好它的DataMoudle,使用ADO联接,保证表的联接成功。 2:在它的表单上放置IWDBEDIT控件,设置好它的DataSource和DataField,保证连接成功。 3:在表单的JavaScript中写入函数如下: function mess() { var s=''; s =SubmitForm.IWDBEDIT1.value; if(SubmitForm.IWDBEDIT1.value) alert('Is not Null' s); else alert('Is Null'); } 4: 在IWDBEDIT1控件的ScriptEvent的onBlur中输入 mess() 5: 运行程序,其中的iwdbedit1控件能正常显示内容,选定iwdbedit1使其成为焦点控件,当失去焦点时,弹出窗口,显示内容为 Is Null。也就是说不能正常取到控件中的值。 6:试着在mess()中给它的一个值,它能按正常显示所给出的值。 现在不知能用什么方法能在它的事件中取控件的值?望各位指教。 在近来的调试中,发现可以使用另外一个变通的方法来实现。在控件的EventScript事件中可以这样来取得它的值 : this.value 1 现在设iwdbedit1控件中的值是1999 在delphi可能这样取到: iwdbedit1.text 2 但在控件的eventscript中就只能这样取了 : alert(this.value); 但是这样又会引出另一个问题,在intraweb中的控件的事件中(只能用JavaScript),它对控件值的控制转换全都认为是字符型的。例如我在控件的onKeyPress事件中这样写 if (event.keyCode < 45 || event.keyCode > 57) event.returnValue = false; 这样在客户端的输入没有任何作用也就是不能输入,但是换成alert(event.KeyCode)时能返回正确的编码,比如输入1 则返回47。但是我不知怎么才能返回它的正常值。我希望它能返回ASCII字符,也不是编码,因为在赋值时它的值是编码值。 设在onKeypress中输入 this.value=''; this.value=this.value event.keyCode; alert(this.value); 在运行时输入12时里面就变成了4748了,数字还好说,减去一些就行了,但如果是字符呢 發表人 - waring_id 於 2005/08/07 23:37:14
waring_id
一般會員


發表:1
回覆:6
積分:6
註冊:2005-06-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-09 20:24:35 IP:218.20.xxx.xxx 未訂閱
各位先进帮帮忙啊,实在是想不通呢
liuwanxiangabc
一般會員


發表:4
回覆:3
積分:1
註冊:2005-07-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-08-10 09:57:41 IP:202.108.xxx.xxx 未訂閱
你这样取值试一试 : LocateElement("IWDBEDIT1").value
waring_id
一般會員


發表:1
回覆:6
積分:6
註冊:2005-06-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-08-11 10:48:32 IP:61.144.xxx.xxx 未訂閱
liuwanxiangabc的方法可行,但是只支持本控件的事件。如果我在FORM的javascript中写一个函数来对其值进行显示或控制就会有问题,提示网页有错误。 例如在IWDBEDIT1的 ScriptEvent的OnBlur 事件中这样写是可行的 alert(LocateElement("IWDBEDIT1").value) 但是如果在FORM的Javascript中写入 function mess() { alert(LocateElement("IWDBEDIT1").value);} 然后在IWDBEDIT1的OnBlur中写入:mess(); 这样就不行了,有什么好的解决方法吗,一定要为每个事件独立写代码,不能写函数的形式。
waring_id
一般會員


發表:1
回覆:6
積分:6
註冊:2005-06-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-08-30 19:05:46 IP:218.19.xxx.xxx 未訂閱
各位先进能不能给个详细的解释呢?
Ktop_Robot
站務副站長


發表:0
回覆:3511
積分:0
註冊:2007-04-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-04-26 13:50:34 IP:000.000.xxx.xxx 未訂閱
提問者您好:


以上回應是否已得到滿意的答覆?


若已得到滿意的答覆,請在一週內結案,否則請在一週內回覆還有什麼未盡事宜,不然,
將由版主(尚無版主之區域將由副站長或站長)自由心證,選擇較合適之解答予以結案處理,
被選上之答題者同樣會有加分獎勵同時發問者將受到扣 1 分的處分。不便之處,請見諒。


有問有答有結案,才能有良性的互動,良好的討論環境需要大家共同維護,感謝您的配合。

------
我是機器人,我不接受簡訊.
系統時間:2024-05-02 9:34:36
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!