Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery.focus()和.blur()在Chrome或Safari中不起作用_Javascript_Webkit_Jquery - Fatal编程技术网

Javascript jQuery.focus()和.blur()在Chrome或Safari中不起作用

Javascript jQuery.focus()和.blur()在Chrome或Safari中不起作用,javascript,webkit,jquery,Javascript,Webkit,Jquery,我正在创建一个调查表单,当用户关注每个问题和答案时,需要通过改变背景颜色来突出显示这些问题和答案。focus和.blur都适用于Firefox和IE,但不完全适用于Safari和Chrome。我也尝试了.focusin和.focusout,得到了相同的结果。编辑:单击不会触发焦点事件,但在输入字段中切换会触发焦点事件。我说不完全是因为它适用于文本输入、选择输入和文本区域输入;但不是无线电和复选框输入 $(document).ready(function() { $("form li")

我正在创建一个调查表单,当用户关注每个问题和答案时,需要通过改变背景颜色来突出显示这些问题和答案。focus和.blur都适用于Firefox和IE,但不完全适用于Safari和Chrome。我也尝试了.focusin和.focusout,得到了相同的结果。编辑:单击不会触发焦点事件,但在输入字段中切换会触发焦点事件。我说不完全是因为它适用于文本输入、选择输入和文本区域输入;但不是无线电和复选框输入

$(document).ready(function()
 {
    $("form li").focusin(function()
  {
   $(this).addClass("over");
  }).focusout(function()
  {
     $(this).removeClass("over");
  });
 });
这将应用于类似以下内容的html块:

<li>
    <label for="webmail" class="desc">Email</label>
    <input type="text" name="webmail" id="webmail" />
</li>
<li>
    <label for="business" class="desc">Purpose of your Charter Flight:</label>
    <div>
        <span>
            <input type="radio" name="purpose" id="business" class="radio" />
            <label class="choice" for="business">Business</label>
        </span>
        <span>
            <input type="radio" name="purpose" id="pleasure" class="radio" />
            <label class="choice" for="pleasure">Pleasure</label>
        </span>
    </div>
</li>

我试着去摆弄开关,但我正在寻找一个更优雅的解决方案,它不需要使用复杂的逻辑来实现。有什么想法吗?

我很久以前也遇到过这个问题,奇怪的是,它是一个单选按钮,让我感到悲伤

试着改用,这里有一个我遇到的问题的工作示例

$("input#zendesk-dropbox-askedbefore, input#zendesk-dropbox-newhere").change(function() {
    $("label#zendesk-dropbox-label-askedbefore, label#zendesk-dropbox-label-newhere").toggleClass('zendesk-dropbox-label-highlight');
});

如果我疯狂地使用ID名称不清楚的话,请在输入前询问inputzendesk dropbox和inputzendesk dropbox new这两个单选按钮。

我昨晚在回家的路上想了想,自己想了想,这可能不是最优雅的解决方案,但它确实有效

$(document).ready(function()
    {
       $("textarea, input, select, .radio, .checkbox").click(function()
        {
            $("form li.over").toggleClass("over");
            $(this).parents("li").toggleClass("over");
        });
    });

无论如何谢谢你

如果blur不起作用,尝试创建一个虚拟输入元素,将其粘贴在页面的某个位置,然后调用focus。谢谢您的帮助,但我最终自己解决了这个问题。不过,对于选择、收音机和复选框来说,这绝对是一个好消息。它限制了文本字段和文本区域的使用,因为在您退出焦点字段后事件会触发,这与我所要查找的不完全相同,但肯定可以用来强制单选按钮和复选框在Chrome/Safari中工作。我遇到了同样的问题,文本输入和无线电输入具有事件焦点,但无线电没有在Webkit中触发此事件,因此它们被放在更改事件上。现在我有两个事件,文本输入的焦点和收音机的更改,都调用相同的回调。您还应该在输入值的标签中包含相关的单击事件,以及当用户使用tab导航表单时会发生什么?您能澄清一下相关的单击事件是什么意思吗?您的意思是将onclick属性添加到标签中吗?还有,为什么?我对整个JavaScript都是新手,所以任何帮助都是有用的!如果.blur和.focus在webkit中的鼠标点击正确运行,我会很高兴,但客户希望它在点击时正常运行。您知道一种优雅的方法来添加.focus和.blur功能,而无需在事件处理程序中再次重复代码吗?正如@jakeisonline所指出的,当用户使用tab或单击标签时,您会遇到麻烦,这是两种在表单中导航的标准方法。我建议将焦点事件留给文本输入,并在收音机和复选框中添加一个更改事件,正如我在另一个答案中建议的那样。
// In js area write following method
$('#chkRikin').focus(function() {
alert('Say Hi Rikin');
});


// in html area write following code anenter code hered test it your self
<input type="checkbox" onclick="this.focus()" onblur="yourMethod()" />

it works in google crom