javascript - jQuery 在 IE 上返回空输入值

标签 javascript jquery internet-explorer-8 internet-explorer-7

HTML:

<div id="fields">
    <input type="text" name="someField" />
    <!-- NOTE: There are some more fields here -->
</div>
<!-- NOTE: There are some more fields here -->

第一个 JS 文件:

jQuery(document).ready(function($) {
    alert($('#fields input[type="text"]').val());
});

第二个 JS 文件:

jQuery(document).ready(function($) {
    $('#fields input[type="text"]').val('someValue');
});

注意事项:

  1. JS 文件位于 head 标签内。
  2. 我不得不在第二个 JS 文件中设置输入值。
  3. 它适用于 Firefox、Opera、Chrome、Safari。
  4. IE7 和 IE8 返回空值。

感谢任何帮助!谢谢!

最佳答案

与其假设该值已在您的第一个“就绪”处理程序中设置,不如让它处理自定义事件,然后从第二个文件触发该事件。

第一个文件:

jQuery(function($) {

   $('#fields input[type="text"]').on('value-ready', function() {
      alert(this.value);
   });

});

第二个文件:

jQuery(function($) {
  $('#fields input[type="text"]').val("whatever").trigger('value-ready');
});

等一下......这有同样的问题:-)等一下,我会解决它......在我解决之前停止投票:-)

好吧,假设我是对的,问题是依赖于“就绪”处理程序的评估顺序(这本质上是一种“代码气味”猜测;可能还有其他一些问题),我所做的更改获胜真的很有帮助。如果第二个 block 先运行,则事件处理程序将尚未设置!

我认为强制排序的唯一真正方法是设置某种“ promise ”系统,或者简单地在元素上使用标记以及处理程序。这样,第一个 block 中的代码可以检查值分配是否已经发生。它有点笨拙,但至少它是明确的:

jQuery(function($) {
  var input = $('#fields input[type="text"]');
  if (input.data('value-ready'))
    alert("value already set: " + input.val());
  else
    input.on('value-ready', function() {
      alert("value is now set: " + input.val());
    });
});

然后在第二个文件中:

jQuery(function($) {
  $('#fields input[type="text"]').val("whatever")
    .data("value-ready", true)
    .trigger("value-ready");
});

关于javascript - jQuery 在 IE 上返回空输入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10915188/

相关文章:

JavaScript - 如何使用递归创建变量嵌套循环?

javascript - 如何在 JS 中操作输入值以在我的 HTML 中重新显示

javascript - IFrame 中的 FB.init 导致 IE8 无限循环,并在一段时间后出现 Flash 错误消息

javascript - 在 React 中使用 Array.map

javascript - 按行获取单选按钮 - Javascript

javascript - 使用 "this": "TypeError: Cannot read property ' renderElapsedString' of undefined"导入函数并获取 props

css - IE 评论根本不在页面上呈现 css

javascript - JQuery .show() - 无效

jquery - 清除表单,但保留单选按钮/复选框/隐藏的值

javascript - IE8 中的 Colorbox 出现摇晃