【问题标题】:Seaside + jQuery variable check for onBlurSeaside + jQuery 变量检查 onBlur
【发布时间】:2013-04-09 15:35:01
【问题描述】:

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

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

如果有未决的更改,视图会显示“保存”和“取消”按钮。如果用户在输入字段后立即单击任一按钮,则输入字段的 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 中没有找到示例。

【问题讨论】:

    标签: jquery smalltalk seaside


    【解决方案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 动作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-30
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-08
      • 2012-04-03
      相关资源
      最近更新 更多