jQuery焦点/模糊$ _GET ['变量']冲突

时间:2012-03-17 06:00:09

标签: php javascript jquery html

我有一个简单的焦点/模糊。默认显示“Venue的名称”,因为它是输入类型的值。如果没有文字,它会隐藏在'焦点'上并且再次显示'模糊'。

这是输入字段

<input type="text" name="name" id="search_name" value="Name of Venue" maxlength="100" />

这是jQuery

$('#search_name').focus(function() {
  if($(this).val() == 'Name of Venue') {
    $(this).val('');
  }
});

$('#search_name').blur(function() {
  if($(this).val() == '') {
    $(this).val('Name of Venue');
  }
});

在提交时,我不希望将“地点名称”存储为$_GET['name']的获取变量。所以,我正在做<br /><br /> PHP

if($_GET['name'] === 'Name of Venue') {
  $_GET['name'] = '';
}

但是,这不起作用。如果它是默认值,我怎样才能使get变量在提交时为空?

3 个答案:

答案 0 :(得分:1)

如果可能,请考虑使用HTML5 placeholder属性。如果未输入任何内容,则该值将为空白。

<input type="text" name="search_name" id="search_name" placeholder="Name of Venue" maxlength="100" />

它会自动显示/消失,因此您不需要焦点/模糊代码。此外,“名称”是name的错误名称,我会使用更独特的内容(通常id会这样做。)

作为替代方案,您可以这样做:

<form id="myform" method="get" action="">
    <input type="text" name="search_name" id="search_name" value="Name of Venue" maxlength="100" />
    <input type="submit" id="submit_button" value="Submit" />
</form>

<script src="jquery-1.7.1.min.js"></script>
<script>
    // ready() not need if <script> follows content, but best to put this in a .js file and link in <head>
    $(document).ready(function() {
        // Define once and you're good
        var search_name = $('#search_name');
        var submit_button = $('#submit_button');
        var search_default = 'Name of Venue';

        search_name.focus(function() {
            if($(this).val() == search_default) {
                $(this).val('');
            }
        });

        search_name.blur(function() {
            if($(this).val() == '') {
                $(this).val(search_default);
            }
        });

        $("#myform").submit(function(event) {
            if (search_name.val() == '' || search_name.val() == search_default) {
                event.preventDefault(); 
            } else {
                return true;
            }
        });
    });
</script>

<?php
    var_dump($_GET);
    $name = '';
    if (isset($_GET['search_name'])) {
        // Without the check, we might run query when none exists
        $name = $_GET['search_name'];
        $name = $name != 'Name of Venue' ? $name : '';
    }
    var_dump($name);
?>

这将阻止使用空白或默认名称提交。将任何重复的逻辑放在函数中并在使用任何额外的搜索变量处理PHP中的GET时调用它们可能很方便。

答案 1 :(得分:0)

如果值为Name of Venue,我认为您必须在提交表单之前将字段值设为空白。

$('#frName').submit(function() {  if($('#search_name').val() == 'Name of Venue' ){ $('#search_name').val('') } return false;});

如果要提交值,可以删除return false。 Hope its helps you

答案 2 :(得分:0)

您可以在客户端控制值,如果是必填字段,则不要提交表单。如果不需要,只需将值设置为“”,如果它是“场地名称”。