2012-01-07 114 views
0

好吧,我对这个墙上,所以任何帮助非常感激。JQuery焦点不工作通过新的1.7.1 .on()方法为Ajax返回HTML

我有一个HTML输入字段:

(ID为:#data_input),这是通过Ajax调用返回。

然后我检查表格是否在#data_input字段提交输入。

(注意:我在的jQuery V1.7.1)

如果不输入任何更改字段的CSS通过它突出红色:

$('#data_input').css('background-color','red') 

和工作正常所以我可以瞄准它。但是,我再碰上一个问题,当我试图撤消当用户通过进入该领域的红色背景:

$('#data_input').on('focus', function(){$(this).css('background-color','white')}); 

,但我什么也没得到,任何想法?

.live().focus()也不要工作:(

+0

你是说'.css()'调用成功_after_字段是通过ajax加载?如果您已将'.on()'调用放入ajax的成功回调函数中,它应该可以正常工作。在焦点函数中尝试'console.log()'而不是设置css,以确认函数是否被调用。并且请多显示一下你的代码,特别是你已经显示的行的上下文。 – nnnnnn 2012-01-07 01:44:56

回答

1

编辑:更新到在动态元素上使用.on。

相同的情况下对我的作品。请参见DEMO这里的代码如下,

HTML:

<div id="result" ></div> 

JS:

$('#result').on ('focus', '#input_field', function() { 
    $(this).css ('background-color', 'white'); 
}); 

$('#result').on ('click', '#submit', function() { 
    if ($('#input_field').text() == '') { 
     $('#input_field').css ('background-color', 'red'); 
    } 
}); 

//added to dom after the binding. see above code. 
$('#result').append('<input type="text" value="" id="input_field" />' + 
        '<input type="button" value="Submit" id="submit" />'); 
+0

不错的演示,但这不是相同的情况,因为你的输入是从页面开始的,而OP的是通过ajax加载的。 – nnnnnn 2012-01-07 01:56:58

+0

@nnnnnn - 更新了我的代码..我错过了AJAX部分。 – 2012-01-07 02:32:22

+0

这是更多的东西。 +1。 – nnnnnn 2012-01-07 02:37:17

0
  1. 看看你写了野外工作的代码不是由AJAX返回。
  2. 我假设你已经检查,以确保重点函数被调用。在所有
  3. 尝试一个onchange处理器
  4. 通过.addClass()
  5. 需求你的钱回来试试你的CSS。)
  6. Try .focus(function(){});
0

试试这个:

$(document).on('focus', '#data_input', function(){$(this).css('background-color','white')});