Seaside + jQuery变量检查onBlur

时间:2013-04-09 15:35:01

标签: jquery smalltalk seaside

如何将变量检查编码到Seaside jQuery onSuccess:script?

我有一个带有输入字段的应用程序,它会触发值更改,然后重新呈现视图。它可以很好地根据显示的值提供域数据的生动反馈。

如果有待更改,视图会显示“保存”和“取消”按钮。如果用户在输入字段后面单击任一按钮,则输入字段的onBlur:脚本会阻止按钮操作发生。建议的解决方案(button click event lost due to the alert box in text box onblur event)是使用按钮的'onmousedown'事件来设置onBlur脚本检查的全局变量。

使用我的测试代码,我可以看到设置了全局“saveCancelButtonClicked”,但我不知道如何检查该值以防止渲染步骤。

html button 
  onMouseDown: 'saveCancelButtonClicked = 1;'; 
  ...

html textInput
 onBlur: ((
  html jQuery ajax 
      callback: [:stringValue | self checkValue: stringValue] 
          value: html jQuery this value)
      onSuccess: (
        (html jQuery id: 'selectedComponent') load html: [:renderer | 
          renderer script: 'console.log(saveCancelButtonClicked); '.
          self renderSelectedComponentOn: renderer]) )]

如果按下保存按钮,我可以看到console.log显示“1”。 那么如何检查值并跳过'self renderSelectedComponentOn:'步骤?

使用javascript(简单的if语句)很容易,但是我没有在Seaside找到一个例子。

1 个答案:

答案 0 :(得分:1)

Joachim Tuchel在Seaside邮件列表上回答了这个问题:

onSuccess: (
    (JSStream on: 'saveCancelButtonClicked == 0') then: (
        (html jQuery id: 'portalSelectedComponent') load html: [:renderer | 

...呈现保存和取消按钮的方法包含...

 html script: 'saveCancelButtonClicked = 0;' .

...保存和取消按钮都实现了......

 onMouseDown: 'saveCancelButtonClicked = 1;'; 

...按照我的意愿工作:更新输入字段后按“保存”或“取消”按钮会在第一次单击时触发回调。 失去焦点通常会触发输入字段onBlur动作。