【问题标题】:hiding an input element on cancel在取消时隐藏输入元素
【发布时间】:2013-09-19 04:10:44
【问题描述】:

我有一个表单,它有一个输入元素,用户可以在其中输入 url - 当他单击编辑按钮时会发生这种情况,此时输入字段会出现。

如果用户开始输入 url 并单击取消按钮,他输入的内容将变为 null,并且输入字段再次从视图中隐藏(一个类被添加到具有 display:none 的元素)。

这就是问题所在: 如果用户键入内容并单击保存按钮,则数据(url)将通过 ajax 请求发送到服务器。这意味着下次加载表单时,用户将看到提交的 url。如果此时选择编辑表单,然后按下取消按钮,提交的 url 将从视图中隐藏……这当然是不可取的,因为我们在这里谈论的是提交的数据。

如何区分一个和另一个,提交的数据和未提交的数据取消。

这里有一些代码,首先与单击取消按钮有关,其次与将类添加到输入元素的函数有关:

$('#canceladrs').click(function() {  
var urlcancel=$.trim($('input#wwwaddress').val());
save=2;
close_url(save,urlcancel);       
closeaddress(); 

});

here is the close_url() function

function close_url(savearg,urlarg,cancelarg)
{
console.log(urlarg);
if(savearg===1)// save button clicking here
    { if(urlarg==='')
            {
              $('input#wwwaddress').addClass('hideurl');
              $('label[for=url]').addClass('hideurl');
              $('input#wwwaddress').val(null);
            } 
       else if(urlarg!=='')
           {
              $('input#wwwaddress').removeClass('hideurl');
              $('label[for=url]').removeClass('hideurl');
              $('input#wwwaddress').val(urlarg);
           }
    }
else if(savearg===2)//cancel button clicking here
{if((urlarg!=='')||(urlarg===''))
        {
            $('input#wwwaddress').addClass('hideurl');
              $('label[for=url]').addClass('hideurl');

        }
}


}

}

正如您在上面看到的,我试图标记单击取消按钮设置 save=2。

【问题讨论】:

  • 我不太明白这个问题。您能否澄清一下您何时以及为什么要隐藏和/或展示事物?此外 jQuery 已经有 hidefadeOut 你不必为此创建自己的类。
  • 当该字段为空或用户开始输入内容时,我会隐藏该字段,此时他按下了取消按钮。我不希望元素在以下情况下隐藏:输入字段将提交的数据作为值提交给数据库,用户单击编辑按钮编辑字段,然后单击取消按钮,停止编辑表单...在后者案例我不想隐藏它,因为它必须不断显示提交的数据。

标签: javascript jquery ajax forms


【解决方案1】:

好的,根据您的评论,如果输入中有文本,您不想隐藏它。在这种情况下,请允许我参考您提供的代码的 sn-p:

if((urlarg!=='')||(urlarg==='')){
            $('input#wwwaddress').addClass('hideurl');
            $('label[for=url]').addClass('hideurl');
}

这里的逻辑是如果urlarg 没有值或者urlarg 有一个值添加一个隐藏输入和标签的类。

因此,您在所有情况下都隐藏了输入和标签。

如果您不想在输入元素有内容时隐藏它们,请不要添加urlarg !== '' 条件。

我还建议为取消和保存事件添加单独的事件处理程序,这样您就不必向函数发送特殊信号,例如 save

另外,正如我提到的,jquery 已经有一个hide,不需要自己做。

最后,你可能想要修剪你的 urlarg 字符串,因为如果用户只输入一个空格,那基本上是没有值的,但你的脚本会将它视为有值。

【讨论】:

  • 让我澄清一下,上面的代码是针对未提交的数据的......这就是为什么在这两种情况下都隐藏了元素。我没有这个问题。我的问题是当输入元素打开以进行编辑并且具有提交数据的价值时单击取消按钮
  • 那么您将需要额外的代码来处理单击取消以在项目有内容时显示项目的情况。就像一个 else 语句。但我认为您需要将此代码分解为单独的事件处理程序,然后重用一个函数。
  • 现在,我想你明白了。您一定不要忘记,虽然有两种情况我们有内容,但一种与另一种不同。在一种情况下,内容是提交的数据(从数据库中获取),第二种情况是没有提交的数据,用户开始填写该字段,然后决定取消 - 改变他/她的想法。
  • 您应该为每个事件定义两个单独的处理程序。试试橡皮鸭调试你的代码:en.wikipedia.org/wiki/Rubber_duck_debugging
猜你喜欢
  • 2013-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多