1

如何将变量检查编码到 Seaside jQuery onSuccess: 脚本中?

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

如果有未决的更改,该视图会显示“保存”和“取消”按钮。如果用户在输入字段后立即单击任一按钮,则输入字段的 onBlur: 脚本会阻止按钮操作发生。推荐的解决方案(由于文本框 onblur 事件中的警报框导致按钮单击事件丢失)是使用按钮的 '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 中没有找到示例。

4

1 回答 1

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 动作。

于 2013-04-10T13:41:55.090 回答