jQuery focus / blur $_GET['variable'] conflict


jQuery focus / blur $_GET['variable'] conflict

我有一个简单的聚焦/模糊。'"场馆名称"默认显示,因为它是输入类型的值。在"focus"中隐藏,如果没有文本,则在"blur"中再次显示。

这是输入字段

<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']的get变量。所以,我正在做<br /><br /> PHP

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

但是,这不起作用。如果get变量是默认值,我如何使其在提交时为空?

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

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

它将自动出现/消失,因此您不需要焦点/模糊代码。此外,"name"对于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时调用这些逻辑,这可能很方便。

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

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

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

如果要提交值,可以删除return false。希望它能帮助你