javascript - 设置隐藏表单 "value"不支持 jQuery

标签 javascript jquery

我有一个函数,它传入一个名为“targetElement”的 jQuery 对象,这是我需要操作的表单字段。我使用此函数在加载后为表单设置默认值。在一种形式中,我有三个隐藏的表单元素(又名 <input type="hidden"> ),每个元素都被分配了一个值,三个中的两个工作正常。第三个让我抓狂。

这是函数中的代码片段:

case "today":
    SetFieldValue (targetElement , Date.today().toString("yyyy-MM-dd HH:mm:ss") );
    console.log ('Setting ' + jQuery(targetElement).attr('id') + ' to "today": ' + Date.today().toString("yyyy-MM-dd HH:mm:ss") );
    break;

SetFieldValue 函数所在位置:

function SetFieldValue ( domObject, value ) {
  // as a safety function, check if a string representation of the domObject was passed in and convert it to a jQuery object if it was
  if ( jQuery.type(domObject) === "string") {
    domObject = jQuery(domObject);
  }

  if ( jQuery.inArray (domObject.prop('tagName').toLowerCase(),['input' , 'select' , 'textarea']) >= 0 ) {
    console.log ("setting to value attribute: " + value);
    domObject.attr('value',value);
    console.log ("now set to: " + domObject.attr('value') + "(" + domObject.attr('id') + ")" );
  } else {
    console.log ("setting to html attribute");
    domObject.html( value );
  }
  return domObject;
}

事情是这样的。我在调用 SetFieldValue 后直接设置调试断点。我输入了“targetElement”,它清楚地表明该值已被设置。然而,当我键入对 DOM 字段的 jQuery 引用时,它显示时没有设置值。嗯?

enter image description here

现在有一件事我没有提到......我怀疑它很重要......当我在调试器中输入“targetObject”时,它做的第一件事就是返回一个空数组:

enter image description here

然后一两秒钟后它自动神奇地扩展到您最初看到的屏幕截图中。请帮忙!

更新

我非常感谢到目前为止的所有帮助,但我怀疑真正的问题是由响应 targetElement(一个 jQuery 对象)的“延迟”所暗示的。有关更多详细信息,请参见上文。我还在下面添加了另一个有趣的快照。如果您注意到代码中的 log.console 语句,这将是有意义的:

enter image description here

我试图做的是:

a) 说明我要将值设置为什么 b) 将值设置为声明的意图(又名,2012-12-02 00:00:00) c)检查它是否已设置(它有) d) 然后从调用路由再次检查(这也确认它已被设置)

在紧跟在最后一个 log.console(“break”语句)之后的行中,我放置了一个断点,调试器没有不同意所有控制台消息。奇怪!

更新 2

人们要求提供额外的上下文,准确地说是“代码”。我正在努力寻找一种好方法来提供一个紧凑的代码模块来重现该问题,因此我认为演示该问题的简短截屏视频可能会有所帮助。这里有两个尝试:

screencast 1 screencast 2

最佳答案

尝试使用 .val(value)而不是 .attr('value',value)

关于javascript - 设置隐藏表单 "value"不支持 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13675075/

相关文章:

javascript - 实现教堂数字和后继函数

event-handling - 单击 "submit"按钮时 jQuery Stop .blur() 事件

javascript - 在页面加载时进行初始验证后验证 if 语句

javascript - 如何在 AJAX 成功时以编程方式关闭 Bootstrap 3 模式?

jquery - 未捕获的类型错误 : undefined is not a function jquery. unobtrusive-ajax.js

javascript - 通过依赖注入(inject)传递参数

javascript - 我真的需要使用 jQuery 检查元素是否存在吗?

javascript - 如何为我的测验代码实现 "table of contents"?

php - SCORM 与本地数据库的集成

javascript - 如何在不使用 Promise 的情况下重写 swal 提示