2013-07-05 39 views
1

我在调整Wordpress主题,并试图清除焦点上的搜索字段,但是当我添加下面的代码时,我得到了死亡的白色屏幕。实际的JavaScript函数似乎是杀了它,因为如果我用空的onfocus =“”命令运行这个PHP脚本,一切都很好。导致Wordpress崩溃的OnFocus javascript命令

add_filter('wp_nav_menu_items','add_search_box', 10, 2); 
    function add_search_box($items, $args) { 
if($args->theme_location == 'primary') { 
    $items .= '<li id="omc-header-search">    
        <span id="omc-search-overlay">'. __('Search', 'gonzo') .' &rarr;</span> 
        <form method="get" id="desktop-search" class="omc-search-form" action="'.get_bloginfo('url').'/"> 
         <input type="text" class="omc-header-search-input-box" value="Search" onfocus="if(this.value == 'Default text') { this.value = ''; }" name="s" id="fffff"> 
         <input type="submit" class="omc-header-search-button" id="searchsubmit" value=""> 
        </form> 
       </li>'; 

return $items; 

} 

我不知道为什么这会导致整个事情崩溃。

+1

添加到您的PHP,进行调试。然后你会看到更多关于错误的信息:'error_reporting(E_ALL^E_NOTICE); ini_set(“display_errors”,1);' – Sergio

回答

0

白页通常表示PHP致命错误或语法错误。
在这种情况下,有一对夫妇不同的错误:

  • 你还没有从你的if()声明关闭{
  • 你长的文本字符串中嵌入引号'没有被正确地转义。

您在字段中的默认文本应该是什么也不一致。

  • 你它value="Search"
  • 设置为"Search" ...但如果它等于"Default text"你只是将其清除。

如果修复PHP语法错误,并将Default text更新为Search,它应该可以工作。

像这样:

add_filter('wp_nav_menu_items','add_search_box', 10, 2); 
function add_search_box($items, $args) { 
    if($args->theme_location == 'primary') { 
     $items .= '<li id="omc-header-search">    
      <span id="omc-search-overlay">'. __('Search', 'gonzo') .' &rarr;</span> 
      <form method="get" id="desktop-search" class="omc-search-form" action="'.get_bloginfo('url').'/"> 
      <input type="text" class="omc-header-search-input-box" value="Search" onfocus="if(this.value == \'Search\') { this.value = \'\'; }" name="s" id="fffff"> 
      <input type="submit" class="omc-header-search-button" id="searchsubmit" value=""> 
      </form> 
      </li>'; 
    } 
    return $items; 
} 
+0

好吧,它不再导致致命的错误,但该字段没有清除焦点。 thebeat42

+0

@ thebeat42,引号还没有逃脱好... – Sergio

+0

@ thebeat42不要从单引号改为双引号 - 这会弄乱生成的HTML。单引号是好的,只要你在PHP中转义它们。另外,你是否尝试更新''默认文本''到'“搜索”'?检查(更新)我的答案的第二部分。 – jcsanyi

0

尝试逃脱onfocus内引号:

onfocus="if(this.value == \'Default text\') { this.value = \'\'; }" 

当PHP中的反斜杠会消失呼应和脚本看起来就像你想要的。

+0

那么它不会崩溃它,但它不会清除焦点上的字段。 – thebeat42

+0

@ thebeat42,我刚刚纠正了我的答案,双引号。渲染后脚本如何在源代码中查找? – Sergio

+0

这是它如何呈现,它显示为红色: thebeat42