.val()没有设置值

时间:2012-10-23 20:14:51

标签: jquery

我有一个名为locEmailMsg的文本输入字段:

<input type="text"
       class="phColor"
       data-placeholder="Your email address"
       maxlength="50"
       style="font-size: 14px; width: 232px;"
       id="locEmailMsg">

在我的$(document).ready()函数中,我需要做一些事情:设置输入的值,设置data-placeholder属性,然后删除phColor类。

$('#locEmailMsg').val(localStorage.email);
$('#locEmailMsg').attr('data-placeholder', localStorage.email);
$('#locEmailMsg').removeClass('phColor');

正确设置了data-placeholder属性(在Firebug中观看),但未设置该值,也未删除该类。为什么一部分可以工作,但其他部分不起作用?

这是一个非常大的系统的一部分,但是我已经在页面加载时逐步完成了所有脚本,并且在此调用之后没有任何事情发生,这反转了值集/类的移除。

2 个答案:

答案 0 :(得分:4)

它可以在你的代码中使用它。

http://jsfiddle.net/bWm2c/1/

但是,如果再次出现具有相同ID的项目,则只会影响第一项。见这里:

http://jsfiddle.net/bWm2c/2/

无论输入与否都无关紧要。 ID必须是唯一的。

我把它暂停了,所以你可以看到变化

window.setTimeout(function() {
    var localStorage = { email: 'foo@bar.com' };

    $('#locEmailMsg')
        .val(localStorage.email)
        .attr('data-placeholder', localStorage.email)
        .removeClass('phColor');
}, 500);
​

这是失败的html(仅影响第一项)

<input type="text"
       class="phColor"
       data-placeholder="Your email address"
       maxlength="50"
       style="font-size: 14px; width: 232px;"
       id="locEmailMsg"
       value="novalue" />

<div id="locEmailMsg">dupid</div>

<input type="text"
       class="phColor"
       data-placeholder="Your email address"
       maxlength="50"
       style="font-size: 14px; width: 232px;"
       id="locEmailMsg"
       value="novalue" />
​

这是我看到你的代码无效的唯一方法。

修改

在您的页面上运行此选项以确保您没有重复的ID

http://jsfiddle.net/bWm2c/4/

$('[id]').each(function(){
  var ids = $('[id="'+this.id+'"]');
  if(ids.length>1 && ids[0]==this)
    alert('Multiple IDs #'+this.id);
});
​

答案 1 :(得分:2)

你的代码看起来很好,它应该工作正常..如果它不起作用那么必然会有一些其他问题,可能会错误地说明这一行..

我会尝试按照以下方法检查失败的位置,

  1. console.logalert localStorage.email的值,以查看值是否合适。
  2. 尝试document.getElementById('locEmailMsg').value = localStorage.email;以确保它不是jQuery问题。