如何检测Racket Web应用程序上的按键?

时间:2017-02-26 19:58:59

标签: web-applications functional-programming lisp racket

我已浏览过网络服务器的文档,但无法找到任何内容。

这是我的基本Web应用程序的代码:

#lang racket

(require web-server/servlet
         web-server/servlet-env)

(define test '())

(define (start request)
  (define bindings (request-bindings request))
  (cond
    ((exists-binding? `cb1 bindings)
     (set! test '(1 2 3))
     (printf "~a" "(test) has been set to '(1 2 3)!")))
  (response/xexpr
   `(html
     (head (title "My Blog"))
     (body
      (h1 "Under construction")
      (form ,`(input ((name "cb1") (type "checkbox")) (value " Checkbox 1")) 
            (p (input ((type "submit") (value "Submit")))))))))

(serve/servlet start)

我希望无需按提交即可提交,而是按输入等键。有可能这样做吗?

1 个答案:

答案 0 :(得分:3)

Racket servlet生成一个发送到客户端的网页(以html格式)。 在客户端上,网页显示在用户的浏览器中。当用户按下某个键时,浏览器需要处理它。让浏览器在按键上执行任何特殊操作的唯一方法是在JavaScript中使用write一个处理程序。请注意,程序的Racket部分仅在服务器上运行。

简而言之:您需要编写一小段JavaScript并将其嵌入到html页面中。

参见How to submit form on keypress? 有关如何在JavaScript中执行此操作的详细信息。