【问题标题】:Modal dialog of the url not working?网址的模态对话框不起作用?
【发布时间】:2015-08-07 04:32:21
【问题描述】:

抱歉,这让我发疯了,但是当我将按钮切换到链接时,我的模式对话框没有出现。基本上对于这个功能(对不起,我不得不取出公司敏感数据,所以一些代码丢失但仍然有效)我只希望编辑器放入一个带有 id 或类的链接,该链接不起作用,但地址打开一个对话框,其中包含地址 url。

我可以使用按钮进行此操作,但这不适用于下面的链接和代码。他们还手动将链接输入到 p-tag 中,并想知道是否可以通过 href 捕获它。

$(function() {
    var dialog, form,


      tips = $( ".validateTips" );


    function addUser() {
      var valid = true;
      allFields.removeClass( "ui-state-error" );

      valid = valid && checkLength( name, "username", 3, 16 );
      valid = valid && checkLength( email, "email", 6, 80 );
      valid = valid && checkLength( password, "password", 5, 16 );

      valid = valid && checkRegexp( name, /^[a-z]([0-9a-z_\s])+$/i, "Username may consist of a-z, 0-9, underscores, spaces and must begin with a letter." );
      valid = valid && checkRegexp( email, emailRegex, "eg. ui@jquery.com" );
      valid = valid && checkRegexp( password, /^([0-9a-zA-Z])+$/, "Password field only allow : a-z 0-9" );

      if ( valid ) {
        $( "#users tbody" ).append( "<tr>" +
          "<td>" + name.val() + "</td>" +
          "<td>" + email.val() + "</td>" +
          "<td>" + password.val() + "</td>" +
        "</tr>" );
        dialog.dialog( "close" );
      }
      return valid;
    }

    dialog = $( "#dialog-form" ).dialog({
      autoOpen: false,
      height: 300,
      width: 350,
      modal: true,

    });

    form = dialog.find( "form" ).on( "submit", function( event ) {
      event.preventDefault();
      addUser();
    });

    $( "#create-link" ).a().on( "click", function(e) {
      e.preventDefault();
      dialog.dialog( "open" );
    });
  });



<div><a href="https://xyz" id="create-link">Perma-link</a></div>
<div id="dialog-form" title="Link Address">
<p class="validateTips">https://xyz</p>
</div>

注意 - 我完全理解在模式框中捕获链接很奇怪,但我们必须这样做,因为供应商不会在 url 中显示完整的活动链接。因此,当我们的用户尝试共享页面时,他们会在浏览器中复制 url,这会将其他用户带到任何地方。此处的链接将他们带到永久页面。我知道这很愚蠢但需要。

【问题讨论】:

  • 你在使用 jQueryUI 吗?可能要添加该标签。
  • @benjarwar - 添加。我不想特定于版本,因为我可以切换。
  • 当然,但是 $.dialog() 不是标准 jQuery 库中的函数。你确定你的页面上加载了 jQueryUI 吗?
  • @benjarwar - 它已加载。当我更改链接并放入按钮时,这很好用。
  • $( "#create-link" ).a() 中的.a() 是什么?很确定方法 a() 不是任何形式的 jquery 或 jquery UI 方法。

标签: javascript jquery jquery-ui


【解决方案1】:

当您使用 jQuery 选择器查找元素时,它会返回一个 jQuery 对象,您可以在该对象上调用 jQuery 定义的方法。

在您的代码中,您有:

$( "#create-link" ).a().on( "click", function(e) {
  e.preventDefault();
  dialog.dialog( "open" );
});

$("#create-link") 返回的对象是 html 中 a 标记的 jQuery 对象。您只能在该对象上调用 jQuery 方法。据我所知,方法 a() 在 jQuery 或 jQuery UI 中没有定义。删除它。

对于链接本身,添加链接然后阻止点击链接的动作是没有意义的。根据此评论,我猜您不了解要求:

UI 人员希望我将其作为链接移交。所以最后一部分 这是将按钮移动到链接,然后制作 href 自动填充 validateTips 部分

在我看来,他们希望您向用户提供链接。

【讨论】:

  • UI 人员想要一个链接,该链接可以打开带有链接地址的对话框,以便人们可以复制/粘贴它。对于与我们打交道的蹩脚供应商来说,这真的很奇怪而且很特别。所以一个链接只打开一个链接文本的对话框 - 而不是链接工作。
  • 确实有效,而且很简单。有没有办法可以获取 href 值并显示它?
  • @blankip 您可以将其设置回按钮并考虑使用数据属性或其他方法(如隐藏输入)将链接传递给对话框。
【解决方案2】:

我认为单击链接时不会触发单击事件。为什么不说

$( "#create-link" ).on( "click", function(e) {
  e.preventDefault();
  dialog.dialog( "open" );
});

只需删除 a()。应该解决问题。

请看这里http://jsfiddle.net/eos4c25w/1/

【讨论】:

  • 这行得通。有没有办法自动显示 #create-link 的 href 内容?
  • var href = $('#create-link').attr('href');
  • 然后您可以使用 jQuery 将其附加到页面 append api.jquery.com/append
  • 当我使用第二个代码时,它在我的对话框中只给了我一个“1”。在我们的网站上进行测试只会将您带到链接。
  • 您对原始问题有两个答案。我认为您应该选择其中一个作为该线程的正确答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多