[Ur] Forms and signals

Chris Double chris.double at double.co.nz
Sun May 29 01:16:17 EDT 2011


I'm trying to create a form where the user enters to amounts and a
calculation composed of these amounts is displayed while the user
types. When the form is submitted the values the user entered are
submitted. I tried this:

------------------8<-------------------
fun doSubmit r =
  return <xml>Done {[readError r.Amount1 * readError r.Amount2 * 2.0]}</xml>

fun main () =
  amount1S <- source "1";
  amount2S <- source "1";
  return <xml>  <body>
   <form>
      <table>
        <tr><td>Amount1:</td><td><textbox{#Amount1}
source={amount1S}/></td></tr>
        <tr><td>Amount2:</td><td><textbox{#Amount2}
source={amount2S}/></td></tr>
        <tr><td>Total:</td><td><dyn signal={showTotal amount1S
amount2S}/></td></tr>
      </table>
      <submit value="Buy" action={doSubmit}/>
    </form>
  </body>
</xml>

and showTotal amount1S amount2S =
  a1 <- signal amount1S;
  a2 <- signal amount2S;
  return (case ((read a1), (read a2)) of
           (None, _) => <xml></xml>
         | (_, None) => <xml></xml>
         | (Some a, Some b) => <xml>{[a * b * 2.0]}</xml>)
------------------8<-------------------

The total is displayed as the user types as expected but when the form
is submitted I get "Fatal error: Missing input Amount1"

Any thoughts on how I could go about this?

Chris.
-- 
http://www.bluishcoder.co.nz



More information about the Ur mailing list