就在我即将发布这个问题时,我想出了一个简单的解决方案——一种解决方案。
问题是我需要多种语言的确认消息,具体取决于用户选择的语言。因为我总是从 HTML 中获取某些信息,所以我试图这样做,但在这一点上卡住了:
这是用户的简单删除按钮,使用带有正确消息的标题属性(在此示例中,它只是文本;在代码中,它是包含正确翻译的变量):
<input type="submit" name="delete" value="Delete me" title="Are you sure?" />
然后我用 jQuery 检索该行并将其显示在确认框中,如下所示:
$("input[type='submit'][name='delete']").click(function() {
return confirm($(this).attr('title'));
});
但是,这仍然意味着输入元素的标题在鼠标悬停时可见,这是我不喜欢的。删除它并不是一个真正的选择,因为取消确认框并再次单击按钮会导致一条空消息。
无论如何,这整个方法对我来说并不适合检索一行简单的文本。然后我想到了 $.get() ——我不知道为什么我之前没有想到这个,因为我一直在其他场景中使用它。
所以我想这通常是一个非常好的解决方案,可以直接将正确的文本导入 JavaScript,而无需处理 HTML 并读出标题或其他属性。
$("input[type='submit'][name='delete']").click(function() {
$.get('something.php', {
action: 'getText',
variable: 'confirm_delete'
}, function(text) {
return confirm(text); // doesn't return instantly...
});
return false; // breaks the form action...
});
更新
好的,现在我把它变成一个关于 jQuery 脚本最后一部分的问题。似乎$.get()
需要一些时间来检索信息。这可能根本没有多少时间,但它是一些时间,同时,表单已经被提交。底部的return false
部分解决了这个问题,因为它是返回的第一件事。但是,当return confirm
以下操作时,单击“确定”不会做任何事情,因为return false
已经停止了默认按钮操作。
所以..我的问题是:有没有办法使用 检索文本$.get()
,并且表单提交等到return confirm
加载?