jquery - 想要从以两种方式呈现的页面中获取值(查看和编辑)

标签 jquery jquery-selectors

(jquery新手警报!)

我正在尝试使用 JQuery/javascript 从文本字段获取值,然后检查它是否已存在 >14 天。我的问题是,页面(以及我的字段的 HTML)会有所不同,具体取决于应用程序/页面处于“编辑”模式还是“查看”模式。

是否可以编写一个选择器,将 val 包装在跨度内,无论它是在输入字段内还是只是跨度内的文本?例如,可以通过 span().val() 获取值吗?我正在尝试,但到目前为止还没有成功。

这是 HTML 片段:

编辑模式:

<td class="m1234Bottom" style="width:35%;">
    <span id="ABC123" class="Datetime">
    <div class="dateElement" id="ABC188c">
        <input name="ABC$123ccc"
           type="text">
        <a class="date"></a>
        <a style="display: none;" class="time"></a>
    </div>
    </span>
</td>

查看模式:

<td class="m1234Bottom" style="width:35%;">
    <span id="ABC123">
        12/23/2012
    </span>
</td>

我可以通过以下方式获取“编辑”值:

$("input[name*='123ccc']".each(function() {
    var outv= $(this).val();
    alert(outv);
});

是否有更好的 JQuery 可以在编辑或查看代码中找到该值?

如果那个选择/each/this.val 链接让你感到畏缩,我很抱歉。我第一次探索 jquery 才几个小时。随意 mock 或指出更好的方法;我什至不需要解释——我可以使用 RTFWebDoc。但如果有人不干预,我就只能通过 javascript 来做这件事:接下来将是一个令人讨厌的 if/then 代码块,然后再进行几个小时的试错和 stackoverflow 阅读来学习 jquery 错误检查 null-值,然后重新发现 javascript 的 string-to-date 函数,然后才最终实现我的目标:“这个日期是否已经超过 14 天了?”

谢谢

最佳答案

如果我理解正确,您想要获取跨度 ID #ABC123 的文本值或名称为 ABC$123ccc 的输入值。

在这种情况下,根据您提供的代码片段,您可以尝试以下方法:

var span = $('#ABC123');

//check if span has input child
if (span.find('input').length > 0) {
    //get value from input field
    var date = span.find('input').val();
}
else {
    //get text date from the span
    var date = span.text();
}

关于jquery - 想要从以两种方式呈现的页面中获取值(查看和编辑),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12631630/

相关文章:

javascript - 实现一个 Jquery 计数器

asp.net - 如何在 ASP.NET 中将对象列表转换为 JSON

jquery - 如何选择直系后裔的直系后裔

jquery - 如何选择 <td> 内除 "div"之外的元素?

javascript - jQuery Selector 获取ID末尾的ID

jquery - 增加字符串中间的数字

javascript - jwPlayer 在 IE8 中不工作

jquery 查找选择选项属性

css-selectors - 为什么 cypress 无法识别我们是否给出完整的类名

javascript - mousemove 自动触发 IE 9