【问题标题】:jquery dialog is clearing my form fields and I need to return a value from a jquery dialogjquery 对话框正在清除我的表单字段,我需要从 jquery 对话框返回一个值
【发布时间】:2010-06-09 06:43:44
【问题描述】:

1.) 我有一个 jQuery 对话框,只要一个特定的文本框被聚焦,它就会打开。对话框的内容是从 ajax 加载的,并且聚焦的文本框的唯一 ID 在 ajax 调用中传递(像这样):

$('[name=start_airport[]],[name=finish_airport[]]').click(function(){
  var id = $(this).attr('id');
  if($('#use_advanced_airport_selector').attr('checked')) {
    $('#advanced_airport_selector').dialog({
      open : function() {
        $(this).load('/flight-booker/advanced-airport-selector.php?callerID='+id);
      }
    });
    $('#advanced_airport_selector').dialog('open');
  }
});

(其中 advanced_airport_selector 是一个空 div)

这部分工作正常。但是,当我在对话框中进行 ajax 调用时,我所有的表单值都会被重置!无论我做什么,当该对话框打开时,所有表单值都会被重置(不仅仅是聚焦的文本框的值)。我根本不明白什么会导致这种行为!

但这只是问题 #1。

2.) 我需要能够从该对话框返回一个值。我在 ajax 查询中传递 ID,以便在对话框中执行某些操作后,我可以使用 jquery 选择器来更新调用者的值。但是,由于我从未遇到过的 DOM_ERRORS,我实际上无法访问该文本框。这没有任何意义!

有很多代码可以发布,而且真的很难解释,如果我不清楚我在问什么,很抱歉。

【问题讨论】:

    标签: jquery ajax dialog


    【解决方案1】:

    问题 #2 中的 DOM 错误可能是由选择器中的方括号引起的。 方括号( [ 和 ] )是 jQuery 中的特殊字符,所以你应该像这样对它们进行转义:

    $('[name=start_airport\\[\\]],[name=finish_airport\\[\\]]').click(function(){
    ...
    });
    

    来自http://api.jquery.com/category/selectors/

    如果您希望使用任何元字符(例如 !"#$%&'()*+,./:;?@[]^`{|}~ )作为 名称的文字部分,您必须使用两个反斜杠转义该字符:\\.为了 例如,如果你有一个 id="foo.bar" 的元素,你可以使用选择器 $("#foo\\.bar")。

    【讨论】:

      猜你喜欢
      • 2011-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多