【问题标题】:Jquery - sometimes working script [closed]Jquery - 有时工作脚本[关闭]
【发布时间】:2012-01-07 05:30:51
【问题描述】:

考虑以下脚本来检查搜索表单是否为空。搜索按钮的id分别是:mainSearchsearchIcon

    <script type="text/javascript">
    $(document).ready(function() {
        $('#mainSearch').click(function() {
                if($("input[type=text][name=search]").val() == "" || $("input[type=text][name=search]").val() == 'Напишете търсената дума'
                || $("input[type=text][name=search]").val() == 'Enter search keywords here')
                    return false;
        });
    });
    $(document).ready(function() {
        $('#searchIcon').click(function() {
                if($("input[type=text][name=q]").val() == "" ) 
                    return false;
        });
    });
    </script>

HTML 方案:

<div class="searchForm">
            <form action="search.php" method="get">
                <input type="text" name="search" id="searchForm" value="<?php if(checkBgLanguage()) echo 'Напишете търсената дума'; else echo 'Enter search keywords here'; ?>" autocomplete="off"
                maxlength="35"/>
                <a href="search.php"><img src="css/imgs/searchIcon.png" width="24" height="24" id="mainSearch"/></a>
            </form></div>

由于某种原因,第二个功能在每个页面上都起作用。第一个功能仅适用于主页。另一个问题是按回车键;没有人应该提交明确的表格。非常感谢任何帮助。

【问题讨论】:

  • 你能把相关的html部分也贴出来吗?
  • 我不明白。你是如何使用这些的?从事件处理程序返回 false 可能不会做你想做的事。此外,您不需要两个 document.ready 函数。

标签: jquery html document


【解决方案1】:

你只需要一个$(document).ready(function() {

试着改成这样:

<script type="text/javascript">

    var texts = [ 'Enter search keywords here' 
                 ,'Напишете търсената дума'];
    $(document).ready(function() {
        $('form').bind('submit', function(e) {
           var errors = 0;
           if('' === $("input[type=text][name=q]").val()) {
               errors++;
           }
           $(texts).each(function(i,x) {
               if(x === $("input[type=text][name=q]").val()) {
                   errors++;
               };
           )};

           if(0 != errors) {
               e.preventDefault();
               return false;
           }

        });
    });
    </script>

【讨论】:

【解决方案2】:

您应该将这两个函数放在一个 $(document).ready(){} 块中,因为每个块都会通过分别绑定事件来减慢您的页面速度。您也可以使用简写 $(function(){});。从那里尝试event.preventDefault() 而不是返回false:

$(function(){
    $('#mainSearch').click(function(event) {
        var val = $("input[type=text][name=search]").val();
        if(val == "" || val == 'Напишете търсената дума'
            ||val == 'Enter search keywords here') {
            event.preventDefault();
        }
    });

    $('#searchIcon').click(function(event) {
        var val = $("input[type=text][name=q]").val();
        if(val == "" ) {
            event.preventDefault();
        }
    });
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-08
    • 2015-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    • 2019-06-17
    相关资源
    最近更新 更多