如何将变量检查编码到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找到一个例子。
答案 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动作。