如何在jquery对话框中运行JavaScript代码
How to run a JavaScript code inside of a jquery dialog
我打开一个jquery对话框,它打开得很好,这个对话框的内容是一个表单,这个表单的一个输入是:
<input onkeyup="testOnKeyUp();" type="text" name="userName" id="userName">
这就是我的问题所在,假设当有人在这个输入中键入一个键时,下面的代码被激活并应该运行,但它只是不起作用。
var validateUserNameSpan = $j('#userNameSpan');
function testOnKeyUp(){
validate(this, validateUserNameSpan, 'username');
}
function validate(field, span, property) {
if (field.value != field.lastValue) {
if (field.timer) clearTimeout(field.timer);
field.timer = setTimeout(function () {
span.value = "";
span.removeClass('error').html('checking ...');
$j.ajax({
url: '/signup/'+property,
data: property + '=' + field.value,
dataType: 'json',
type: 'post',
success: function (json) {
updateMessage(span, json.success, json.message);
if(property=="email"){
emailValid = true;
}else if(property=="username"){
userNameValid = true;
}
},
error: function() {
ajFailureInitSignup(span);
if(property=="email"){
emailValid = false;
}else if(property=="username"){
userNameValid = false;
}
}
});
}, 400);
if(userNameValid && emailValid) document.getElementById('buttonLink').onclick=null ;
field.lastValue = field.value;
}
}
我做错了什么?
我不知道,但是谷歌一下,我得到的信息让我觉得:
$j.ajax({
,我在这个对话框内运行(验证函数)没有被执行,为什么我这么说?因为这个对话框是在DOM中创建的,然后在那里创建$j。未执行Ajax
是真的吗?
谢谢你的帮助。
Ok,主要问题是AJAX调用在发出后立即返回-这是正常的(这是AJAX中的第一个'A' -异步)。这意味着您的代码将立即继续到if (usernamevalid && emailvalid)
代码部分。此时这些变量还不存在,因为AJAX调用还没有返回。所以你在比较未定义的变量,这也会失败。
您必须将该比较移动到ajax成功/错误处理程序中,以便只有在ajax调用实际产生可以比较的数据时才会进行比较。
相关文章:
- 在终端中运行 JavaScript 时(使用 rhino),如何使用 print() 函数在一行中打印
- 向下滚动时运行javascript
- 在Android WebView中运行Javascript-onPageFinished循环
- 在父网页的iframe中运行JavaScript
- 有条件地运行javascript函数-Razor,HTML
- 如何通过获取用户输入和使用按钮来运行JavaScript函数
- 使用c#在Web服务器上运行JavaScript方法
- 单击链接时停止运行javascript
- 在浏览器检查表单之前运行javascript onsubmit
- 如何在表单提交事件后运行JavaScript*
- Mediawiki小部件将不会运行javascript
- 有没有一种方法可以在服务器端页面加载之前在加载时运行javascript
- 在GitHub上运行JavaScript Koans
- Chrome扩展:是否有一种方法可以运行JavaScript来获取页面上的内部html,并将其保存到扩展中的变量中
- 在不加载页面的情况下运行javascript
- [AutoIt]如何使用FF.au3在FireFox上的页面中运行javascript
- 仅在屏幕媒体上运行javascript/jquery,而不是打印
- Scala提升了如何运行javascript函数并将返回值存储在变量中
- 安卓系统:通过loadUrl运行javascript时,网络视图中的视频会冻结
- 在页面加载完成之前,使用URL参数运行JavaScript