代码之家  ›  专栏  ›  技术社区  ›  ninu

如何在文本区域模糊时保持提交按钮可见和可执行

  •  0
  • ninu  · 技术社区  · 14 年前

    我有一个 <div id="comment_posting_holder"> 包含两个元素的窗体的标记:文本框和提交按钮。

    如果我单击“提交”按钮以外的其他位置,我希望DIV标记(包含文本区域和提交按钮)消失。我从下面的代码开始。所以在离开文本区域的焦点时,我可以使DIV标记消失。

    问题是如果DIV消失了,那么提交按钮也会消失,这意味着我不能提交表单!我怎么修这个?

    有什么建议吗?谢谢您!

    **facebook的评论就是这样做的。如果你点击“发表你的评论…”字段,文本区域就会出现,然后它会在失去焦点时消失,而不是你按下提交按钮。

    $('textarea').blur(function() {
         $('#comment_posting_holder').hide();
    });
    
    3 回复  |  直到 14 年前
        1
  •  3
  •   Germán Rodríguez    14 年前

    如果你想要一个像Facebook这样的实现,你需要检查是否有人在文本框中写了一些东西。

    你可以看到我的答案有效 here

    HTML

    <div>
       <textarea class="comment_empty">Write a comment</textarea><br />
       <input type="submit" id="submit" value="Submit" style="display: none" />
    </div>
    

    JQuery

    $(document).ready(function(){
        var submit = $("#submit");
    
        $("textarea").blur(function() {
            if ($(this).val() == "") {
                $(this).val("Write a comment")
                       .removeClass("comment_filled")
                       .addClass("comment_empty");
                submit.hide();
            }
        }).focus(function() {
            if ($(this).val() == "Write a comment") {
                $(this).val("")
                       .removeClass("comment_empty")
                       .addClass("comment_filled");
                submit.show();
            }
        });
    });
    

    一些CSS

    .comment_empty {
       color: gray;
       height: 30px;
    }
    
    .comment_filled {
       color: black;
       height: 100px;
    }
    
        2
  •  3
  •   GlenCrawford    14 年前

    我理解你想要的:
    如果用户单击任意位置,而单击的元素不是“提交”按钮,则隐藏DIV。

    代码:

    $(document).ready(function() {
      $(document).click(function(event) {
        if (event.target.id == "idOfSubmitButton") {
          //user clicked the submit button (make sure to give it an ID)
          //if you wanted to be really hardcore, you could submit the form here via AJAX
        }
        else {
          //user clicked anywhere on the page but the submit button
          //here you'd want to check and make sure someone has actually typed
          //something in the textarea, otherwise this will happen for every
          //click on a hyperlink, button, image, et cetera on the page
          $('#comment_posting_holder').hide();
        }
      });
    });
    
        3
  •  1
  •   Jage    14 年前

    由于代码中的语法错误,无法正常工作。除了缺少的单引号,只要它是在一个事件中,实际上是射击,你所拥有的看起来很好。试试这个:

    $(document).ready(function(){
        $('textarea').blur(function() {
            $('#comment_posting_holder').hide();
        });
    });