台灣最大程式設計社群網站
線上人數
1285
 
會員總數:246690
討論主題:190103
歡迎您免費加入會員
討論區列表 >> Java Script/ Node.js >> 如何不執行按鈕就直接執行函數?
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
如何不執行按鈕就直接執行函數?
價值 : 75 QP  點閱數:2709 回應數:19
樓主

Merrick
門外漢
0 2
36 9
發送站內信

各位大大好,

最近正在學習寫網頁,

目前碰到一個問題,

請大家先看圖 http://ppt.cc/UNYL

就是選完日期之後還要按查詢按鈕,

才會產生資料在下面的欄位之中,

不知道有沒有語法可以在我選完日期之後就直接產生資料,

不用經過再按查詢按鈕這個動作,

我是有想到使用onchange,但是毫無效果,

以下是我目前的寫法,請大家參考並指點。

這是產生日期的語法:



前面還會include calendar.inc這個月曆

而且若是將 onchange="Do_Query('v') 改為 onchange="alert( '請再檢查資料是否正確')"時,
當我從鍵盤填完值之後確實會出現alert( '請再檢查資料是否正確'),
若是用滑鼠選完日期則不會執行onchange的動作。

主要是想問有沒有辦法可以直接執行Do_Query('v')這個函數,
而不用再經過滑鼠點選這動作,請各位大大指點。


搜尋相關Tags的文章: [ onchang ] ,
本篇文章發表於2013-12-02 13:20
1樓
回應

凱爾
捐贈 VP 給 凱爾 檢舉此回應
試試onblur 事件(失去焦點時發生)

http://www.w3school.com.cn/htmldom/event_onblur.asp
本篇文章回覆於2013-12-02 14:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

Merrick
檢舉此回應
onblur、onfocus、onchange都試過了,
都是一樣還無效果。
本篇文章回覆於2013-12-02 14:26
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

凱爾
捐贈 VP 給 凱爾 檢舉此回應
Do_Query函數只有改變document.criteria.h_QryFlag.value = "V"的值?
alert放在這函數底下有跑進去嗎?如果在這函數加上Trigger click事件是不是你想要的效果?
document.getElementById('btnSearch').click()
本篇文章回覆於2013-12-02 15:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

阿健
檢舉此回應
我試過了 可能有幾個錯誤
你的onchange只有一個" 少了一個
再來就是你的Do_Query裡面
要設定值的時候,物件沒取到
通常我都會設定幾個alert看看有沒有取到物件
我這邊是用document.all.h_QryFlag1來取得物件


本篇文章回覆於2013-12-02 15:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

Merrick
檢舉此回應
凱爾大您好,
我暫時將function改成以下這種

function Do_Query(f_str) {
document.getElementById('h_dateto').click() ;
document.criteria.h_QryFlag.value = "V";
alert( '請再檢查資料是否正確'); }

alert放在這函數底下有跑進去,會跑出alert的視窗,
但是底下日期依然不會有所改變,還是需要執行按鈕,才會進一步動作。
本篇文章回覆於2013-12-02 15:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

Merrick
檢舉此回應
各位大大您們好,

我照著步驟去做,
alert的確有跑進來,
而且值也有讀進來,
請看圖檔
http://ppt.cc/D0nE

但是在ALL這個欄位依然沒有進行LOAD的動作,還是要加上按扭動作才可以。

本篇文章回覆於2013-12-02 16:03
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

阿健
檢舉此回應
all不是欄位.

document.all.h_QryFlag1.value
文件document中所有物件all中的某個物件ID叫做h_QryFlag1的物件
你要操控一個元件的value <input type=text id=h_QryFlag1 >
則用document.all.h_QryFlag1.value
本篇文章回覆於2013-12-02 16:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

Merrick
檢舉此回應
阿健大大您好,

抱歉我說得不清楚,

我指得ALL是指圖中的第三個框所顯示的<ALL>框框,

我期望的結果是當我日期輸入完之後,

不需要執行按鈕的動作,則時間之內的資料都會自動在圖中的<ALL>框框秀出來,

目前看來Do_Query函數的確有執行到,而且參數值也有傳到函數裡面,

但時間之內的資料仍然不會自動秀出來,還是要加上執行按鈕的動作,才有辦法。
本篇文章回覆於2013-12-02 16:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

凱爾
捐贈 VP 給 凱爾 檢舉此回應
看來跟伺服器端的語言比較有關了,能問你是用什麼語言開發的嗎?
要不要再貼完整一點的Code出來
本篇文章回覆於2013-12-02 17:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

Merrick
檢舉此回應
各位大大好,

剛剛用Response.Write(TEST:<%=mDateto%>),
發現是日期沒有送進去做查詢動作,
不知道為什麼ONCHANGE值不會把日期送進去做查詢
,但ONCLICK就有把日期送進去做查詢

請問如何改善?


本篇文章回覆於2013-12-02 18:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

凱爾
捐贈 VP 給 凱爾 檢舉此回應
你的程式碼蠻亂的...我刪減掉一些程式碼
你點查詢後其實表單應該有Submit的動作,而你onchange後沒有Submit當然不會有值
參考看看:

本篇文章回覆於2013-12-02 23:09
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
作者回應

Merrick
檢舉此回應
感謝凱爾大大的解釋,
所以不管怎樣都要有Submit的動作才能有送出值嚕,
有語法可以自動將值submit出去嗎?
本篇文章回覆於2013-12-03 08:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
回應

凱爾
捐贈 VP 給 凱爾 檢舉此回應
你可以用Ajax的方式去動態改變select list的選項,但這又是另一個方向了
要初學的話,可以試試我早年寫ASP的方式,將select資料塞到JavaScript的陣列
不管click或onchange都去改變select list的項目
但使用請小心...資料量大的話這樣效率蠻差的...自己在試試看囉^^"
本篇文章回覆於2013-12-03 09:36
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
作者回應

Merrick
檢舉此回應
各位大大好,

我剛剛有找一下資料,

我再加上document.criteria.submit(); 資料就可以Submit出去,

不過又有一個問題產生,

就是我必須手動輸入值才會觸發,

若是用js月曆給值就無法觸發,

請任何語法可以判斷這種情況嗎?
本篇文章回覆於2013-12-03 09:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
15樓
回應

迷路
捐贈 VP 給 迷路 檢舉此回應
你的問題我之前也遇到過
http://www.blueshop.com.tw/board/show.asp?subcde=BRD20121113135627FLB&fumcde=BRD20121113135627FLB

我的情況是onclick觸發js日曆
在觸發完後要做計算
最後的方法是
在onpropertychange、oninput和onchange都呼叫計算的function
雖然火狐的效果有些不盡人意
提供給你參考看看
本篇文章回覆於2013-12-03 10:27
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   

回覆
如要回應,請先登入.