1.) 我有一个 jQuery 对话框,每当特定文本框获得焦点时就会打开该对话框。对话框的内容从 ajax 加载,并且焦点文本框的唯一 ID 在 ajax 调用中传递(如下所示):
$('[name=start_airport[]],[name=finish_airport[]]').click(function(){<br/>
var id = $(this).attr('id');<br/>
if($('#use_advanced_airport_selector').attr('checked')) {<br/>
$('#advanced_airport_selector').dialog({<br/>
open : function() {<br/>
$(this).load('/flight-booker/advanced-airport-selector.php?callerID='+id);<br/>
}<br/>
});<br/>
$('#advanced_airport_selector').dialog('open');<br/>
}<br/>
});<br/>
(where advanced_airport_selector is an empty div)
那部分工作正常。但是,当我在对话框中进行 ajax 调用时,我的所有表单值都会重置!无论我做什么,当该对话框打开时,所有表单值都会重置(而不仅仅是焦点文本框的值)。我根本不明白什么会导致这种行为!
但这只是问题#1。
2.) 我需要能够从该对话框返回一个值。我在 ajax 查询中传递 ID,以便在对话框中执行某些操作后可以使用 jquery 选择器更新调用者的值。但是,由于我从未遇到过 DOM_ERRORS,我实际上无法访问该文本框。这没有任何意义!
有很多代码要发布,而且真的很难解释,如果我不清楚我在问什么,很抱歉。
最佳答案
问题 #2 中的 DOM 错误可能是由选择器中的方括号引起的。 方括号( [ 和 ] )是 jQuery 中的特殊字符,因此您应该像这样转义它们:
$('[name=start_airport\\[\\]],[name=finish_airport\\[\\]]').click(function(){
...
});
来自http://api.jquery.com/category/selectors/ :
If you wish to use any of the meta-characters ( such as !"#$%&'()*+,./:;<=>?@[]^`{|}~ ) as a literal part of a name, you must escape the character with two backslashes: \\. For example, if you have an element with id="foo.bar", you can use the selector $("#foo\\.bar").
关于jquery 对话框正在清除我的表单字段,我需要从 jquery 对话框返回一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3003593/